首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SocketServer从不退出

SocketServer从不退出
EN

Stack Overflow用户
提问于 2015-02-05 20:13:43
回答 1查看 716关注 0票数 3

我正在使用SocketServer启动一个简单的TCP服务器:

代码语言:javascript
复制
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),唯一的退出方法是调用os._exit(0)或关闭shell窗口。

我已经搜索了一些它,但是我仍然找不到我缺少的东西:线程被标记为守护进程,服务器在最后被关闭。

我在Windows8.1下运行Python2.7.9

EN

回答 1

Stack Overflow用户

发布于 2015-02-15 13:25:16

Ctrl会引发KeyboardInterrupt异常,问题是SocketServer内部捕获错误,但不会出现麻烦。您可以为signal.SIGINT添加一个额外的信号处理程序&然后调用server.start()。像这样,

代码语言:javascript
复制
import signal
import sys
def signal_handler(signal, frame):
     logger.log("DEBUG","You pressed Ctrl+C!")
     server.stop()
     sys.exit(0)
signal.signal(signal.SIGINT, signal_handler)
server_thread.start()
signal.pause()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28353171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档