有关flask-apscheduler文档

2020-03-24  本文已影响0人  葡萄柚子茶

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')
上一篇下一篇

猜你喜欢

热点阅读