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()