**关于Flask-APScheduler定时任务遇到的问题及解决方法**

1.app初始化的时,就要初始化Scheduler对象,并且设置为app的属性并启动,在接口中初始化,添加定时任务是无效的。

2.执行时报错:

RuntimeError: No application found. Either work inside a view function or push an application context.

RuntimeError: Working outside of application context.

原因:

1>.定时器在后台运行实际上是找不到app的,需要push一个app context给它,让它在上下文里面工作。

解决办法:

在这里插入图片描述

2>.操作db需要app,定时任务中的数据库链接,在执行数据库操作的时候是中断的。

解决办法:

进行数据库操作之前,需要将session重新merge
在这里插入图片描述

3>.任务中需要的参数获取不到,比如app的一些配置、token。因为http是没有连接状态的,执行定时任务时,接口请求已经完成,这时候是获取不到token的。

解决办法:

执行定时任务前,将这些参数赋值给临时变量。

4>.使用flask_mail在定时任务中发送邮件时,会使用到app上下文。需要push一个app contex。

解决办法:
在这里插入图片描述

3.类似报错
在这里插入图片描述

原因:

corn表达式错误

APScheduler触发器triggers为cron的时候,支持cron表达式,但是只支持五位,即minute, hour, day, month,day_of_week

你可能感兴趣的:(flask)