当主踏板终止时,我一直在寻找一个解决方案来终止由socketserver.StreamRequestHandler
类作为单独线程生成的ThreadingMixIn
的解决方案。问题是socketserver线程虽然是守护进程,但只要有一个打开的客户端连接就会终止,即使在程序关闭时调用它的shutdown()
方法也是如此。因此,主胎面也没有终止。 How to stop BaseHTTPServer.serve_forever() in a BaseHTTPRequestHandler subclass?或类似帖子中的所有建议都不适合我。
我现在找到了一个解决方案:
类ThreadingMixIn
具有属性daemonic_threads
,默认情况下为true:
class ThreadingMixIn:
"""Mix-in class to handle each request in a new thread."""
# Decides how threads will act upon termination of the
# main process
daemon_threads = False
在我的子类中,当然,它会覆盖方法handle()
,我现在还在__init__
中定义了覆盖:
daemon_threads = True
现在所有客户端请求都是守护进程,当主线程终止时,它们也会终止。太好了! 希望这可以帮助有类似问题的人。