1.基本概念
不管你使用哪种APScheduler的定时任务,你都需要先了解APScheduler的简单机制。即:job、executors、jobstores、trigger、scheduler等
1.job
即需要被执行的具体任务,主要对应Python中的函数或方法。在APScheduler中即可以装饰器的方式添加,也可以动态添加job。
2.executors
即执行job的对象。通常可以是多线程、多进程、协程等对象。
3. jobstores
即存储job元数据的地方。可以是memory、sqllite、mysql等。
4.trigger
即决定任务的触发模式
4.1date :固定日期触发器:任务只运行一次,运行完毕自动清除;若错过指定运行时间,任务不会被创建
4.2interval: 时间间隔触发器
4.3cron : 指定日期时间周期性触发 (详细说明往下看)
5.scheduler
用于调度和管理上述提到的所有对象。
5.1BlockingScheduler 阻塞定时任务执行器
5.2BackgroundScheduler 后台定时任务执行器
2.以装饰器方式添加时阻塞方式的时间间隔任务
from apscheduler
.schedulers
.blocking
import BlockingScheduler
sched
= BlockingScheduler
()
@sched
.scheduled_job
('interval', seconds
=5)
def my_job():
pass
sched
.start
()
3.动态添加指定日期的后台任务
from apscheduler
.schedulers
.blocking
import BlockingScheduler
def my_job():
pass
sched
= BlockingScheduler
()
sched
.add_job
(my_job
, 'cron', month
='11-12', day
='3rd fri', hour
='0-3')
sched
.start
()
4.trigger触发器参数详解
1. date :固定日期触发器:任务只运行一次,常用参数:
1.1 run_date
(datetime 或
str) 作业的运行日期或时间
1.2 timezone
(datetime
.tzinfo 或
str) 指定时区
2. interval: 时间间隔触发器,常用参数
2.1 weeks
(int) 间隔几周
2,2 days
(int) 间隔几天
2.3 hours
(int) 间隔几小时
2.4 minutes
(int) 间隔几分钟
2.5 seconds
(int) 间隔多少秒
2.6 start_date
(datetime 或
str) 开始日期
2.7 end_date
(datetime 或
str) 结束日期
2.8 timezone
(datetime
.tzinfo 或
str) 时区
3. cron : 指定日期时间周期性触发
3.1 year
(int 或
str) 年,
4位数字
3.2 month
(int 或
str) 月
(范围
1-12)
3.3 day
(int 或
str) 日
(范围
1-31
3.4 week
(int 或
str) 周
(范围
1-53)
3.5 day_of_week
(int 或
str) 周内第几天或者星期几
(范围
0-6 或者 mon
,tue
,wed
,thu
,fri
,sat
,sun
)
3.6 hour
(int 或
str) 时
(范围
0-23)
3.7 minute
(int 或
str) 分
(范围
0-59)
3.8 second
(int 或
str) 秒
(范围
0-59)
3.9 start_date
(datetime 或
str) 最早开始日期
(包含
)
3.10 end_date
(datetime 或
str) 最晚结束时间
(包含
)
3.11 timezone
(datetime
.tzinfo 或
str) 指定时区
参考博客
https://blog.csdn.net/five3/article/details/89500049 https://blog.csdn.net/caiguoxiong0101/article/details/50364236 https://blog.csdn.net/xc_zhou/article/details/80952147