安排对Cherrypy的支持。
marbaloo_schedule的Python项目详细描述
Schedule支持Cherrypy。
安装
pip install marbaloo_schedule
用法
# app.py import cherrypy import marbaloo_schedule schedule_plugin = marbaloo_schedule.Plugin(cherrypy.engine) schedule_plugin.subscribe() cherrypy.tools.schedule = marbaloo_schedule.Tool() class Root(object): job_started = False def do_jobs(self): import schedule # request level jobs # e.g: send emails # if my_job_completed: # schedule.CancelJob pass @cherrypy.expose def index(self): schedule = cherrypy.request.schedule if self.job_started is False: schedule.every(5).seconds.do(self.do_jobs) return 'jobs started :)' else: return 'jobs already started!' config = { '/': { 'tools.schedule.on': True } } cherrypy.quickstart(Root(), '/', config)
对于类似这样的服务器级作业:
import cherrypy import marbaloo_schedule schedule_plugin = marbaloo_schedule.Plugin(cherrypy.engine) schedule_plugin.subscribe() class Root: pass cherrypy.tree.mount(Root(), '/', {}) cherrypy.engine.signals.subscribe() cherrypy.engine.start() def do_server_jobs(): # server level jobs print('Job is Done') schedule_plugin.schedule.every(5).seconds.do(do_server_jobs) cherrypy.engine.block()
注意:对于任何位置的停止作业,请使用schedule tags。