如何使用开放客户端连接关闭服务器?

时间:2016-07-04 13:06:09

标签: python multithreading socketserver

当主踏板终止时,我一直在寻找一个解决方案来终止由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

现在所有客户端请求都是守护进程,当主线程终止时,它们也会终止。太好了! 希望这可以帮助有类似问题的人。

0 个答案:

没有答案