CherryPy 不监听 SIGHUP // 守护 CherryPy 脚本
CherryPy don't listen for SIGHUP // daemonize CherryPy script
我已经使用 CherryPy 框架开发了一个 Telegram Bot,我正在尝试将其部署到 EC2 实例上。
由于我的 python 脚本不是守护进程,CherryPy 似乎在收到 SIGHUP 时将其关闭(我的终端关闭)。我不希望这种情况发生,似乎有一种方法可以修改 CherryPy 处理这些信号的方式:
来自docs:
You can modify what signals your application listens for, and what it
does
when it receives signals, by modifying :attr:SignalHandler.handlers
,
a dict of {signal name: callback} pairs. The default set is::
handlers = {'SIGTERM': self.bus.exit,
'SIGHUP': self.handle_SIGHUP,
'SIGUSR1': self.bus.graceful}
我当前的脚本有一个 cherrypy.config.update()
和相关的服务器配置字典,还有一个 cherrypy.server.quickstart()
。我也可以让它不处理信号吗?
或者我应该将我的脚本部署为守护进程吗?如果是这样,我怎样才能做到 Ubuntu?
CherryPy 附带 built-in 守护程序,将调用夹在配置更新和 quickstart
之间,如下所示:
cherrypy.config.update(...)
cherrypy.process.plugins.Daemonizer(cherrypy.engine).subscribe()
cherrypy.process.plugins.SignalHandler(cherrypy.engine).subscribe()
cherrypy.quickstart(...)
您可能会考虑的另一个选择是 运行 您的服务器位于 Supervisor (http://supervisord.org/)
等过程控制器后面
我已经使用 CherryPy 框架开发了一个 Telegram Bot,我正在尝试将其部署到 EC2 实例上。
由于我的 python 脚本不是守护进程,CherryPy 似乎在收到 SIGHUP 时将其关闭(我的终端关闭)。我不希望这种情况发生,似乎有一种方法可以修改 CherryPy 处理这些信号的方式:
来自docs:
You can modify what signals your application listens for, and what it does when it receives signals, by modifying :attr:
SignalHandler.handlers
, a dict of {signal name: callback} pairs. The default set is::handlers = {'SIGTERM': self.bus.exit, 'SIGHUP': self.handle_SIGHUP, 'SIGUSR1': self.bus.graceful}
我当前的脚本有一个 cherrypy.config.update()
和相关的服务器配置字典,还有一个 cherrypy.server.quickstart()
。我也可以让它不处理信号吗?
或者我应该将我的脚本部署为守护进程吗?如果是这样,我怎样才能做到 Ubuntu?
CherryPy 附带 built-in 守护程序,将调用夹在配置更新和 quickstart
之间,如下所示:
cherrypy.config.update(...)
cherrypy.process.plugins.Daemonizer(cherrypy.engine).subscribe()
cherrypy.process.plugins.SignalHandler(cherrypy.engine).subscribe()
cherrypy.quickstart(...)
您可能会考虑的另一个选择是 运行 您的服务器位于 Supervisor (http://supervisord.org/)
等过程控制器后面