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

标签 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()。

最佳答案

某一特定信号只能有一个处理程序。 reactor.run()SIGTERM 安装自己的处理程序来替换您的处理程序。

幸运的是, react 器的 SIGTERM 处理程序本质上与您的处理程序执行相同的操作(但更正确)。

关于python - 如何使 Twisted 应用程序处理 SIGTERM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21680756/

相关文章:

python - Twisted同时执行10个线程并等待结果

python - DataFrame 中基于标签的安全选择

python - Windows 解释器上未定义命名元组

Python断言语句和代码可重用性

ssl - Scrapy 无法连接到仅支持旧版 TLSv1 的 HTTPS 站点。连接丢失

python - Twisted - SleekXMPP 兼容性

python - IRCBot 不会加入 channel

python - 经过多次尝试后,我无法使用 Shutil.move 将文件从一个文件夹移动到另一个文件夹

python - 如何将 DataFrame 中的值与某些条件进行匹配?

python - 禁用 SSL 证书检查 Twisted Agents