Python 正在使用阻止句柄停止SocketServer

Python 正在使用阻止句柄停止SocketServer,python,python-multithreading,tcpserver,Python,Python Multithreading,Tcpserver,我使用的是SocketServer.ThreadingMixIn,与中的非常相似 除了提取客户端以在其自己的脚本上运行之外,我还重新定义了handle方法,因为我希望与客户端的连接保持活动状态并接收更多消息: def handleself: 尝试: 尽管如此: 数据=self.request.recv1024 如果没有数据: 如果客户端已断开连接,break将退出线程 其他: printcur_thread.name self.request.senddata 除: 通过 问题是,即使我尝试使用

我使用的是SocketServer.ThreadingMixIn,与中的非常相似

除了提取客户端以在其自己的脚本上运行之外,我还重新定义了handle方法,因为我希望与客户端的连接保持活动状态并接收更多消息:

def handleself: 尝试: 尽管如此: 数据=self.request.recv1024 如果没有数据: 如果客户端已断开连接,break将退出线程 其他: printcur_thread.name self.request.senddata 除: 通过 问题是,即使我尝试使用server.shutdown或键盘中断来终止服务器,只要客户端保持打开的套接字,它仍然会在句柄上被阻止


那么,即使仍有连接的客户端,如何有效地停止服务器

我找到的最佳解决方案是使用SocketServer.ForkingMixIn而不是SocketServer.ThreadingMixIn


这样,守护进程实际上可以工作,尽管使用进程而不是线程并不是我想要的。

请发布调用handle函数的代码。请参阅;我只将客户端提取到一个单独的脚本中,并更改了句柄;其他内容与文档中的内容相同。您的代码中是否有server_thread.daemon=True?如果没有,在线程完成之前,它不会在中断时退出。请发布您拥有的确切代码,以便我可以自己测试它。请查看两个文件: