我已经用CherryPy框架开发了一个Telegram Bot,并且正在尝试将它部署到EC2实例上。
因为我的python脚本不是守护进程,所以当它接收到SIGHUP (我的终端关闭)时,CherryPy似乎关闭了它。我不希望这种情况发生,而且似乎有一种方法可以修改CherryPy处理这些信号的方式:
来自文档
您可以通过修改:attr:
SignalHandler.handlers({信号名称:回调}对)来修改应用程序侦听的信号以及它在接收信号时所做的操作。默认设置为: 处理程序= {'SIGTERM':self.bus.exit,'SIGHUP':self.handle_SIGHUP,‘SIGUSR1 1’:self.bus.graceful}
我的当前脚本有一个带有相关服务器配置字典的cherrypy.config.update()和一个cherrypy.server.quickstart()。我还能让它不处理信号吗?
还是应该将脚本部署为守护进程?如果是这样的话,我如何才能在Ubuntu中实现它呢?
发布于 2019-06-24 14:22:36
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/) )后面运行您的服务器。
https://stackoverflow.com/questions/55824824
复制相似问题