CherryPy不要听SIGHUP //守护CherryPy脚本

时间:2019-04-24 07:45:11

标签: python signals ubuntu-16.04 daemon cherrypy

我已经用CherryPy框架开发了Telegram Bot,并试图将其部署在EC2实例上。

由于我的python脚本不是守护程序,因此CherryPy似乎在收到SIGHUP时将其关闭(我的终端关闭了)。我不希望这种情况发生,并且似乎有一种方法可以修改CherryPy处理这些信号的方式:

来自docs

  

您可以修改应用程序侦听的信号及其内容   确实       当它收到信号时,通过修改:attr:SignalHandler.handlers,       {信号名称:回调}对的字典。默认设置为::

    handlers = {'SIGTERM': self.bus.exit,
                'SIGHUP': self.handle_SIGHUP,
                'SIGUSR1': self.bus.graceful}

我当前的脚本有一个带有相关服务器配置字典的cherrypy.config.update()和一个cherrypy.server.quickstart()。我还可以使其不处理信号吗?

还是应该仅将脚本部署为守护程序?如果是这样,我该如何在Ubuntu上原生?

1 个答案:

答案 0 :(得分:1)

CherryPy附带一个内置的守护程序,将调用夹在配置更新和quickstart之间,如下所示:

cherrypy.config.update(...)

cherrypy.process.plugins.Daemonizer(cherrypy.engine).subscribe()
cherrypy.process.plugins.SignalHandler(cherrypy.engine).subscribe()

cherrypy.quickstart(...)

您可能会考虑的另一种选择是在诸如Supervisor(http://supervisord.org/)之类的进程控制器后面运行服务器