如何使Twisted应用程序处理SIGTERM?

时间:2014-02-10 15:10:22

标签: python twisted

我有以下示例代码。处理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()。

1 个答案:

答案 0 :(得分:2)

特定信号只能有一个处理程序。 reactor.run()SIGTERM安装自己的处理程序,取代您的处理程序。

幸运的是,reactor的SIGTERM处理程序基本上与你的处理程序完全相同(但更正确)。