flask_apscheduler

网上很多文章包括官网给出来的,更多的是执行的函数和初始话app在同一文件

按照app 路由 模型类 视图 往下延申,项目已经成型,所以上述的方法不适用。

(不用操心模型类与app互相导入的错误)下面分享一下具体流程。

 

安装包命令

pip3 install  flask_apscheduler    

 

新建一个文件  apscheduler.py

from  flask_apscheduler  import  APScheduler

scheduler = APScheduler()

 

 在flask.app初始化的地方加入

flask_apscheduler    

from apps.scheduler import scheduler

因为初始化的时候会执行,如果不加这个判断,就会才有重复调用的报错,

报警了也是不影响执行,避免debug预警,所以加个判断

if scheduler.app is None:

     scheduler.init_app(app)

     scheduler.start()

 

在视图函数上引入,因为是自动执行就和路由函数做成区分

@scheduler.task('cron', id='随便写,有辨识性就行', day_of_week='*', hour=4)  # 每天的四点执行
def xxx():
  print('')

如果报错提示 Working outside of application context,在函数中加入这一句

with scheduler.app.app_context():
  User.query.all()

 

 

间隔执行(示例)

每天凌晨1点30分50秒执行一次

@scheduler.task('cron',id='xxx', day_of_week='*', hour=1, minute='30', second='50') 

每天4点执行一次

@scheduler.task('cron',id='xxx',day_of_week='*',hour=4)

 

 

Interval触发器-参数说明

weeks (int)    间隔几周

days (int)       间隔几天

hours (int)      间隔几小时

minutes (int)  间隔几分钟

seconds (int) 间隔多少秒

start_data (datetime 或者 str ) 开始时间

end_data (datetime 或者 str )  结束时间

timezone (datetime 或者 str )  时区

 

cron触发器-参数说明

year (int 或者 str)    年,4位数字

month (int 或者 str) 月,  范围1-12

day (int 或者 str)     日,  范围1-31

week (int 或者 str)  周,  范围(1-53)

day_of_week (int 或者 str) 周内第几天或者星期几 (范围0-6,或者 mon,tue,wed ,thu ,fri,sat,sun)

hour (int)      间隔几小时

minute (int)  间隔几分钟

second (int) 间隔多少秒

start_data (datetime 或者 str ) 开始时间

end_data (datetime 或者 str )  结束时间

timezone (datetime 或者 str )  时区

posted @ 2023-01-09 13:33  .未央  阅读(284)  评论(0编辑  收藏  举报