我已经基于 cherrypy 制作了一个服务器,但是我有一个重复的任务需要很长时间(超过一分钟)才能运行。这一切都很好,直到我需要关闭服务器,然后我将永远等待线程完成。
我想知道您如何检测客户端线程内的 cherrypy 关闭,以便在服务器关闭时线程可以中止。
我正在寻找这样的东西:
class RootServer:
@cherrypy.expose
def index(self, **keywords):
for i in range(0,1000):
lengthyprocess(i)
if server_is_shutting_down():
return
最佳答案
您可以直接检查状态:
if cherrypy.engine.state != cherrypy.engine.states.STARTED:
return
或者,您可以在“停止” channel 上注册一个监听器:
class RootServer:
def __init__(self):
cherrypy.engine.subscribe('start', self.start)
cherrypy.engine.subscribe('stop', self.stop)
def start(self):
self.running = True
def stop(self):
self.running = False
@cherrypy.expose
def index(self, **keywords):
for i in range(0,1000):
lengthyprocess(i)
if not self.running:
return
如果您还希望在服务器启动时而不是在请求时启动冗长的进程(或执行一些准备),后者特别有用。
关于python - 如何检测cherrypy是否正在关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11078254/