gpt4 book ai didi

python - 如何释放端口然后第二次运行 Tornado 应用程序?

转载 作者:行者123 更新时间:2023-11-28 22:03:17 27 4
gpt4 key购买 nike

我有这段代码(hello.py):

import os,sys
import tornado.ioloop
import tornado.web
import tornado.httpserver

#http server class
class http_server(tornado.web.RequestHandler):
def get(self):
self.write("Hello, getter!")
def post(self):
self.write("Hello, poster!")

#create http server
Handlers = [(r"/",http_server)]
App_Settings = {"debug":True}
HTTP_Server = tornado.web.Application(Handlers,**App_Settings)

#run http server
HTTP_Server.listen(9999)
tornado.ioloop.IOLoop.instance().start()

来自终端的命令第一次运行良好:
python hello.py

此后,终端继续等待 Tornado 的输出。当我打开 http://localhost:9999 , 它返回 "Hello, getter!"随心所欲。但是第二次,Python 显示错误:

Traceback (most recent call last):
File "hello.py", line 19, in <module>
HTTP_Server.listen(9999)
File "/usr/local/.../tornado/web.py", line 1227, in listen
server.listen(port, address)
File "/usr/local/.../tornado/netutil.py", line 100, in listen
sockets = bind_sockets(port, address=address)
File "/usr/local/.../tornado/netutil.py", line 265, in bind_sockets
sock.bind(sockaddr)
File "<string>", line 1, in bind
socket.error: [Errno 98] Address already in use

我按 Ctrl-Z 将“hello.py”发送到后台,但这并没有释放端口。如果我关闭终端,端口将被释放。然而,python 源文件的路径深深地嵌套在目录中,所以我不想在每次更改代码后关闭终端并重新启动它。有人向我建议我应该在应用程序设置中使用 debug=True 但这似乎与 Tornado 保持端口的问题无关。

我也试过“pidof python”,然后杀死所有 python 进程,但端口仍然被顽固的 Tornado 占用。有没有办法用一些 Python 语句释放 Tornado 持有的所有端口?还是手动?

最佳答案

如果您可以使用 Python 语句释放 Tornado 端口,这并不是您问题的真正答案,但由于它似乎已经解决了您的问题,所以我想我还是会写一个简短的答案;

Ctrl-Z 只会让您的程序进入休眠状态,不会释放任何端口

另一方面,如果您使用 Ctrl-C,程序将完全停止。这将允许您简单地使用 shell 历史记录重新启动它。

关于python - 如何释放端口然后第二次运行 Tornado 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9529482/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com