APScheduler+Flask

 

1.首先创建一个定时任务管理的类

创建一个 ScheduleTask.py,定义一个类

class ScheduleConfig(object):
JOBS = [
{
'id': '配置文件校验任务', #任务名,自己随便起
'func': 'service.ConfigCheckService:compareConfig', #任务 调用的方法, 包.文件:方法名
'trigger': { # trigger为调度类型

'type': 'cron',

'day_of_week': "0-6",
                'hour': '*',
'minute': '*',
'second': '0'
},
'args':'',

},
{
'id': '触发器为interval的测试任务',
'func': 'task.ScheduleTask:job2',
'args': '',
'trigger': 'interval',
'seconds': 120
}

]

SCHEDULER_API_ENABLED = True

2. 在flask的启动文件(也就是app所在的文件
)加入定时任务策略
app = Flask(__name__)

app.config.from_object(ScheduleTask.ScheduleConfig()) #在app里配置定时任务的类
app.config.update(RESTFUL_JSON=dict(ensure_ascii=False))

api = Api(app)
api.add_resource(dataPushController.DeveloperDataPush, '/datapush/developerUrl')
api.add_resource(dataPushController.ProductDataPush, '/datapush/productUrl')

#初始化定时任务并启动
scheduler = APScheduler()
scheduler.init_app(app)
scheduler.start()
 
FAQ.定时任务有时候会执行失败
Run time of job "9668_hack (trigger: interval[1:00:00], next run at: 2018-10-29 22:00:00 CST)" was missed by 0:01:47.387821

问题解决如下(增加misfire_grace_time 等三个参数
JOBS = [
{
'id': '配置文件校验任务',
'func': 'service.ConfigCheckService:compareConfig',
'trigger': {
'type': 'cron',
'day_of_week': "0-6",
'hour': '*',
'minute': '0/2',
'second': '0'
},
'args':'',
'coalesce': True, # 积攒的任务只跑一次
'max_instances': 100, # 支持1000个实例并发
'misfire_grace_time': 600 # 600秒的任务超时容错

}

]
 


posted @ 2019-11-07 10:27  M兔  阅读(529)  评论(0编辑  收藏  举报