Apscheduler 介绍
核心组件: 调度器、作业存储、执行器、触发器
调度器
BlockingScheduler
阻塞的调度器,适用于脚本
BackgroundScheduler
后台调度器,适用于非阻塞的应用如Web应用
AsyncIOScheduler
适用于 asyncio 的调度器
GeventScheduler
适用于 Gevent 的调度器
TornadoScheduler
适用于 Tornado 的调度器
TwistedScheduler
适用于 Twisted 的调度器。
作业存储
保存作业的地方,默认是使用 内存存储,也可以持久化到数据库,支持redis、mongdb等
执行器
执行作业的工具,默认是ThreadPoolExecutor和ProcessPoolExecutor,也就是线程池和进程池
触发器
确定何时运行作业,主要有三种:date、interval、cron
date
在特定时间点运行一次,也就只运行一次
interval
按指定间隔运行,例如每五秒运行
cron
可支持复杂的规格,例如每天某个时间点执行,每周一执行等
更多详细介绍请转到官网
基本用法
创建调度器
设置触发器
运行定时任务
scheduler = BackgroundScheduler()
触发器常用规则
可以使用对应的trigger对象进行建立对应的规则
add_job 可接收的参数
func, trigger=None, args=None, kwargs=None, id=None, name=None,
misfire_grace_time=undefined, coalesce=undefined, max_instances=undefined,
next_run_time=undefined, jobstore='default', executor='default',
replace_existing=False, **trigger_args
func 要运行的函数对象,注意是函数对象,不是函数名
date 支持的规则
传入一个时间对象
cron 支持的规则
每周几执行
可以填写 0-6 或者 mon,tue.wed,thu,fri,sat,sun
scheduler.add_job(job_function, 'cron',**{"day_of_week": "mon"})
每天固定时间执行
scheduler.add_job(job_function, 'cron',**{"hour": "mon"})
目前此篇博文还未写完,后续会完善
这位博主写得很好