HTTPServer.shutdown 返回但套接字仍然打开
我有一段代码,用来在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
这个函数执行完后,监听的连接还在打开。我通过在stop_server
的最后加上os.system("netstat -ln | grep 8000")
来验证这一点,结果经常显示这个连接仍然在监听。
有没有办法让stop_server
这个函数在连接关闭后再返回呢?
1 个回答
5
看起来这个问题是通过添加 server.server_close()
来解决的,就像 @ρss 提到的那样:
def stop_server(self):
self.server.shutdown()
self.server.server_close()