apscheduler 官方文档
flask-apscheduler 案例
基于Flask-APScheduler实现添加动态定时任务
项目中运用
首先先在config.py文件中配置
class APSchedulerJob(object):
JOBS = [
{
# id不可重复
'id': 'job1',
#func表示任务执行的函数的路径在utils.py文件下的csv_file函数
'func': 'utils:csv_file',
#触发条件
'trigger': {
'type': 'cron',
'hour': '14',
'minute': '29',
'second': 1
}
},
{
'id': 'job2',
'func': 'utils:generate_csv_data',
'trigger': 'interval',
'minutes': 1
}
]
SCHEDULER_API_ENABLED = True
然后在app.py文件中配置
app.config.from_object(APSchedulerJob)
scheduler = APScheduler()
scheduler.init_app(app)
scheduler.start()
就可以实现定时任务了
注:如果开始debug模式,会有两个进程,会实例化两个scheduler,job任务会执行两次,在启动定时任务时,关闭debug模式即可
triggers: 支持三种任务触发方式
1.date:固定日期触发器,任务只运行一次,运行完毕自动清除;若错过指定运行时间,任务不会被创建
参数 | 说明 |
---|---|
run_date (datetime 或 str) | 作业的运行日期或时间 |
timezone (datetime.tzinfo 或 str) | 指定时区 |
例如# 在 2019-4-24 00:00:01 时刻运行一次 start_system 方法
scheduler .add_job(start_system, 'date', run_date='2019-4-24 00:00:01', args=['text'])
2.interval:时间间隔触发器,每个一定时间间隔执行一次。
参数 | 说明 |
---|---|
weeks (int) | 间隔几周 |
days (int) | 间隔几天 |
hours (int) | 间隔几小时 |
minutes (int) | 间隔几分钟 |
seconds (int) | 间隔多少秒 |
start_date (datetime或str) | 表示开始时间 |
end_date (datetime或str) | 表示结束时间 |
例:在 2019-4-24 00:00:00 - 2019-4-24 08:00:00 之间, 每隔两小时执行一次 alarm_job 方法
scheduler .add_job(alarm_job, 'interval', hours=2, start_date='2019-4-24 00:00:00' , end_date='2019-4-24 08:00:00')
3.cron:cron风格的任务触发
参数 | 说明 |
---|---|
year (int 或 str) | 表示四位数的年份 (2019) |
month(int或str) | 月 (范围1-12) |
day(int或str) | 日 (范围1-31) |
week(int或str) | 周 (范围1-53) |
day_of_week (int或str) | 表示一周中的第几天,既可以用0-6表示也可以用其英语缩写表示 |
hour (int或str) | 表示取值范围为0-23时 |
minute (int或str) | 表示取值范围为0-59分 |
second (int或str) | 表示取值范围为0-59秒 |
start_date (datetime或str) | 表示开始时间 |
end_date (datetime或str) | 表示结束时间 |
timezone (datetime.tzinfo或str) | 表示时区取值 |
(int|str) 表示参数既可以是int类型,也可以是str类型
(datetime | str) 表示参数既可以是datetime类型,也可以是str类型
例如:表示每5秒执行该程序一次,相当于interval 间隔调度中seconds = 5
sched.add_job(my_job, 'cron',second = '*/5')
网友评论