为什么python中的这个线程没有停止?

时间:2016-07-09 19:19:41

标签: python multithreading python-multithreading simplehttpserver

我正在尝试在线程中的python中设置一个简单的http服务器。

Server started
Sleeping for 20 seconds
Got shut down request
127.0.0.1 - - [09/Jul/2016 12:17:17] "GET /shutdown HTTP/1.1" 200 -
Server finished serving
Finished sleeping
MainThread
serverthread
True

我的假设是,一旦_run_http_server完成运行,线程应该停止运行但它没有。我得到这个输出,但线程一直在运行。任何人都可以指出为什么线程不会停止?

rvm install 2.2

1 个答案:

答案 0 :(得分:2)

在您的代码中,您有自己的请求处理循环(而不是使用HTTPServer.serve_forever())。然而,你调用HTTPServer.shutdown(),其职责是告诉serve_forever()循环停止并等到它。由于serve_forever()甚至没有启动,shutdown()永远不会返回(它实际上正在等待serve_forever()启动并立即停止)。删除self._http_server.shutdown()行可解决问题。