我有以下示例代码。处理 SIGINT 的代码工作得很好,但当我发送 SIGTERM 时,它似乎没有做同样的事情。可能出了什么问题?
def signal_handler(signal, frame):
print 'Terminating...'
reactor.removeAll()
reactor.stop()
def run():
signal.signal(signal.SIGINT, signal_handler)
signal.signal(signal.SIGTERM, signal_handler)
site = server.Site(stuff)
reactor.listenTCP(8080, site)
reactor.run()
为什么 SIGTERM 不调用 signal_handler?
已更新答案
我在运行reactor之前添加了reactor.addSystemEventTrigger('before', 'shutdown', shutdown)
,然后从shutdown方法中调用reactor.sigTerm()。
最佳答案
某一特定信号只能有一个处理程序。 reactor.run()
为 SIGTERM
安装自己的处理程序来替换您的处理程序。
幸运的是, react 器的 SIGTERM
处理程序本质上与您的处理程序执行相同的操作(但更正确)。
关于python - 如何使 Twisted 应用程序处理 SIGTERM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21680756/