我有以下代码,用于在端口 8000 上运行本地 HTTP 服务器:
# 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
返回一旦套接字关闭?
最佳答案
看起来这个问题是通过按照 @ρss 建议添加 server.server_close()
来解决的:
def stop_server(self):
self.server.shutdown()
self.server.server_close()
关于python - HTTPServer.shutdown 返回但套接字仍然打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23363401/