从Cherrypy服务器捕获退出信号

时间:2019-03-21 10:39:56

标签: python cherrypy

我有一个通过Cherrypy提供的应用程序。如果服务器重新启动/发生故障,我想从Cherrypy服务器捕获退出信号,以便执行一些数据库清理。

我知道可以实现此目的的订阅/取消订阅方法,但不确定。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

很遗憾,两年内没有人正确回答。而且cherrypy文档很糟糕。在这里,为了后代,所以其他人可以避免麻烦......

假设您的自定义退出函数(用于清理数据库等)是 my_quit_func ....

import cherrypy
from cherrypy.process.plugins import SignalHandler

signalhandler = SignalHandler(cherrypy.engine)
signalhandler.handlers['SIGTERM'] = my_quit_func
signalhandler.handlers['SIGHUP'] = my_quit_func
signalhandler.handlers['SIGQUIT'] = my_quit_func
signalhandler.handlers['SIGINT'] = my_quit_func
signalhandler.subscribe()

....然后,这个块之后,使用 cherrypy.quickstart 或任何你喜欢的方式启动主要的cherrypy线程。

答案 1 :(得分:0)

这是一个如何定义信号处理程序的示例。

http://docs.cherrypy.org/en/latest/_modules/cherrypy/process/plugins.html http://docs.cherrypy.org/en/latest/pkg/cherrypy.process.html

有很多文档可以帮助您了解如何定义并绑定到Signal并使用它。也许您可以找到带有该链接的解决方案。