[Flask Tips]Flask-APScheduler用法总结
在应用中需要使用调度框架来做一些统计的功能,可惜在Windows上可用的不多,最后选择了APScheduler这个调度器。 app_context 问题凡是在APScheduler中调用的function,只要用到初始化跟app相关的对象(如db,mail),都是需要app上下文的,正常情况下都需要push app_context的。 #此创建app实例 def get_app(): flask_app=create_app('production') return flask_app def job1(): with get_app().app_context(): #需要做的操作 重复运行问题在create_app时同时创建APScheduler对象,并且init然后start,会出现一个重复运行的问题。 scheduler=APScheduler() def create_app(config_name): app=Flask(__name__) app.jinja_env.trim_blocks=True app.config.from_object(config[config_name]) config[config_name].init_app(app) scheduler_init(app) return app def scheduler_init(app): try: lockfile=open('scheduler.lock','w') portalocker.lock(lockfile,portalocker.LOCK_EX | portalocker.LOCK_NB) lockfile.write(str(datetime.datetime.now())) scheduler.init_app(app) scheduler.start() except: pass def _unlock_file(): try: portalocker.unlock(lockfile) except: pass atexit.register(_unlock_file) 获得锁的进程,在解释器被销毁时会调用_unlock_file释放锁,新创建的进程又会得到锁,所以APScheduler会一直运行。 如果要想获得准确调度,可以使用APScheduler另外启动一个进程,而不要使用Flask-APScheduler。 不过Flask-APScheduler对我的应用来说够用了。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- python – 为Django admin扩展base_site.html
- python2 'str' object has no attribute &#
- Linux系统上Nginx+Python的web.py与Django框架环境
- Python – 请求/ RoboBrowser – ASPX POST JavaScript
- 布尔运算值布尔值True和False上算术运算的用法
- Python技巧—处理非平稳时间序列
- TypeError: validate_on_submit() missing 1 required posi
- 如何在不执行list = []的情况下清空Python列表?
- arcgis python pdf合并
- python – 从列表生成多个列表