0
我有我使用8000端口運行本地HTTP服務器下面的代碼:HTTPServer.shutdown回報,但插座仍然是開放
# Omitted imports and irrelevant things for brevity.
class ThreadedHTTPServer(SocketServer.ThreadingMixIn, HTTPServer):
pass
class MyClass(object):
server = None
def start_server(self):
handler = MyPageHandler
self.server = ThreadedHTTPServer(('', 8000), handler)
server_thread = threading.Thread(target=self.server.serve_forever)
server_thread.daemon = False
server_thread.start()
def stop_server(self):
self.server.shutdown()
但是偶爾當stop_server
返回時,監聽套接字仍然會開幕。我通過將os.system("netstat -ln | grep 8000")
置於stop_server
的末尾來驗證這一點,並且它經常表明套接字仍在監聽。
一旦套接字已關閉,是否有辦法只從stop_server
返回?
只是嘗試socket.shutdown()前一次socket.close(),看看是否有新的變化。 –
這是做到這一點的正確方法嗎?我目前不直接訪問套接字,只需使用'HTTPServer'類。 – DanielGibbs
也許這提供了一些提示http://stackoverflow.com/a/20746459/2382792 –