我有此代碼(hello.py):如何釋放端口,然後再次運行Tornado應用程序?
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()
它運行細首次使用該命令從終端:
蟒hello.py
在此之後,終端不斷等待龍捲風的輸出。當我打開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持有的所有端口?或手動?
最簡單的方法; CRTL-C不工作而不是CTRL-Z?如果你有一個有歷史的shell,那麼不應該再引發太多的問題。 – 2012-03-02 07:25:25
似乎要做的訣竅:) – jondinham 2012-03-02 07:28:37
我不知道答案只是「Ctrl-C」,哈哈,tks約阿希姆,請添加到答案:) – jondinham 2012-03-02 07:29:44