我開始使用的SocketServer簡單的TCP服務器:SocketServer的永遠不會退出
class ThreadedTCPServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer):
pass
...
server = ThreadedTCPServer((HOST, PORT), ThreadedTCPRequestHandler)
server_thread = threading.Thread(target=server.serve_forever)
server_thread.daemon = True
server_thread.start()
try:
...
finally:
server.shutdown()
然而,程序結束它不會終止,之後似乎被卡住。它不響應鍵盤事件(CTRL-C),唯一的退出方式是調用os._exit(0)
或關閉shell窗口。
我已經搜索了一下,但我仍然沒有看到我缺少的東西:線程被標記爲守護進程,並且服務器在最後被關閉。
我的Windows 8.1
你嘗試:'server_thread.join()' – ozgur 2015-02-05 20:30:46
@ozgurv好一點。如果代碼正常結束,它將終止。但是,如果拋出一個異常(例如CTRL-C),它仍然會被'server_thread.join()'(但不會與'os._exit(0)')卡住 – 2015-02-05 20:53:53