要捕获来自Cherrypy服务器的退出信号,可以使用Python的signal模块。
下面是一个示例代码:
import cherrypy
import signal
class MyServer(object):
@cherrypy.expose
def index(self):
return "Hello, World!"
def signal_handler(signum, frame):
cherrypy.engine.exit()
if __name__ == '__main__':
cherrypy.config.update({'server.socket_host': '0.0.0.0', 'server.socket_port': 8080})
cherrypy.tree.mount(MyServer(), '/')
cherrypy.engine.signals.subscribe()
signal.signal(signal.SIGINT, signal_handler) # 捕获SIGINT信号
cherrypy.engine.start()
cherrypy.engine.block()
在上面的示例中,我们定义了一个Cherrypy服务器,并在根路径上添加了一个处理器。然后,我们使用signal.signal
函数将SIGINT
信号与signal_handler
函数绑定。signal_handler
函数调用cherrypy.engine.exit()
来正常关闭Cherrypy服务器。
当我们在终端中按下Ctrl+C
时,会发送SIGINT
信号,signal_handler
函数会被调用,然后关闭Cherrypy服务器。
请注意,上述代码仅适用于Unix系统。如果您在Windows系统上运行代码,可能需要使用其他信号,如SIGBREAK
或SIGTERM
。