apscheduler 定时任务器的使用笔记
Contents
七种scheduler
-
BlockingScheduler: 当应用程序中只有调度器时使用
-
BackgroundScheduler: 不使用任何以下框架:asyncio, gevent, Tornado, Twisted, Qt, 并且需要在你的应用程序后台运行调度程序
-
AsyncIOScheduler: 应用程序使用asyncio模块时使用
-
GeventScheduler: 应用程序使用gevent模块时使用程序
-
TornadoScheduler: Tornado应用程序使用
-
TwistedScheduler: Twisted应用程序使用
-
QtScheduler: Qt应用程序使用
Tornado中使用
sched = TornadoScheduler() 可以作为全局变量,在项目任何引用的地方操作调度器
sched.start() 是调度器真正开始执行的入口
sched.start() 之前 sched.add_job缓存的任务会开始调度,之后 sched.add_job的任务立即调度(达到执行时间的时候执行任务)
scheduler.shutdown(wait=True) 默认情况下调度器会等待所有正在运行的作业完成后,关闭所有的调度器和作业存储。如果你不想等待,可以将wait选项设置为False。
scheduler.add_job() 第二个参数是trigger,它管理着作业的调度方式。它可以为date, interval或者cron。对于不同的trigger,对应的参数也相同。
trigger:
- interval 间隔调度
循环执行,间隔固定的时间
# Schedule job_function to be called every two hours sched.add_job(job_function, 'interval', hours=2)
- date 定时调度
只会执行一次,指定时间执行后就结束
# The job will be executed on November 6th, 2009 sched.add_job(my_job, 'date', run_date=date(2009, 11, 6), args=['text']) # The job will be executed on November 6th, 2009 at 16:30:05 sched.add_job(my_job, 'date', run_date=datetime(2009, 11, 6, 16, 30, 5), args=['text'])
- cron 定时调度
闹钟似执行,设定计划时间表执行
# Schedules job_function to be run on the third Friday # of June, July, August, November and December at 00:00, 01:00, 02:00 and 03:00 sched.add_job(job_function, 'cron', month='6-8,11-12', day='3rd fri', hour='0-3') # Runs from Monday to Friday at 5:30 (am) until 2014-05-30 00:00:00 sched.add_job(job_function, 'cron', day_of_week='mon-fri', hour=5, minute=30, end_date='2014-05-30')
一个完整的例子
apscheduler_demo.py
|
|
注意小坑
-
浏览器地址栏输入高频使用的url,没有等用户输入全部链接,也没等用户enter键确认,浏览器就会自动请求一次
-
任务id必须是字符串类型
-
其他种类的 scheduler 和 tornado版 使用方法不相同,需要区别对待
Author hopehook
LastMod 2017-02-19