1. Trigger 触发器
包含调度逻辑,每一个作业有它自己的触发器,用于决定接下来哪一个作业会运行。除了它们自己初始配置以外,触发器完全是无状态的。
- date: 特定的时间点触发
- interval: 固定时间间隔触发
- cron: 在特定时间周期性地触发
1.1 date 触发器
| 参数 | 说明 |
|---|---|
| run_date (datetime or str) | 任务运行的日期或者时间 |
| timezone (datetime.tzinfo or str) | 指定时区 |
Example:
from datetime import datetime
from apscheduler.schedulers.blocking import BlockingScheduler
scheduler = BlockingScheduler()
def my_job(text):
print(text)
# 触发类型
trigger_type = 'date'
# 触发条件
trigger_props = {
'run_date': datetime.strptime('2022-05-24 17:40:00', '%Y-%m-%d %H:%M:%S')
}
scheduler.add_job(my_job, trigger_type, **trigger_props, args=['hello world'])
scheduler.start()1.2 interval 触发器
| 参数 | 说明 |
|---|---|
| weeks (int) | 间隔几周 |
| days (int) | 间隔几天 |
| hours (int) | 间隔几小时 |
| minutes (int) | 间隔几分钟 |
| seconds (int) | 间隔多少秒 |
| start_date (datetime 或 str) | 开始日期 |
| end_date (datetime 或 str) | 结束日期 |
Example:
# 触发类型
trigger_type = 'interval'
# 触发条件
trigger_props = {
'minutes': 1 # 间隔1分钟运行(并不是每分钟的第一秒运行)
}
scheduler.add_job(my_job, trigger_type, **trigger_props, args=['hello world'])
scheduler.start()1.3 crontab 触发器
| 参数 | 说明 |
|---|---|
| year (int 或 str) | 表示四位数的年份 (2019) |
| month (int\ str) | 月 (范围1-12) 可以是int类型,也可以是str类型 |
| 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) | 表示开始时间 可以是datetime类型,也可以是str类型 |
| end_date (datetime\ str) | 表示结束时间 |
| timezone (datetime.tzinfo\ str) | 表示时区取值 |
Example:
# 触发类型
trigger_type = 'cron'
# 触发条件
trigger_props = {
# 指定年份
'year': 2022,
# 指定3-6月
'month': '3-6',
# 每周二、周三、周四
'day_of_week': 'tue,wed,thu',
# 每小时
'hour': '*',
# 第一分钟
'minute': '1',
# 每隔5秒
'second': '*/5'
}
scheduler.add_job(my_job, trigger_type, **trigger_props, args=['hello world'])
scheduler.start()