我有以下示例代码。处理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()。
答案 0 :(得分:2)
特定信号只能有一个处理程序。 reactor.run()
为SIGTERM
安装自己的处理程序,取代您的处理程序。
幸运的是,reactor的SIGTERM
处理程序基本上与你的处理程序完全相同(但更正确)。