我有一个通过Cherrypy提供的应用程序。如果服务器重新启动/发生故障,我想从Cherrypy服务器捕获退出信号,以便执行一些数据库清理。
我知道可以实现此目的的订阅/取消订阅方法,但不确定。有人可以帮忙吗?
答案 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并使用它。也许您可以找到带有该链接的解决方案。