一、依赖
pip install apscheduler
二、使用流程
1.使用方法
from apscheduler.schedulers.blocking import BlockingScheduler
- ①生成一个定时器对象:sched = BlockingScheduler()
- ②定时器对象中添加一个定时任务:sched.add_job(func, trigger=None, args=None, **trigger_args)
- func:定时的任务函数
- trigger:定时器类型
- args:用来调用func的位置参数列表
- ③开启定时器:sched.start()
2.不同trigger对应的不同的关键字参数
2.1 date
- run_date(datetime | str)–运行作业的日期/时间,仅运行一次
示例:
# 该作业将于2009年11月6日16:30:05执行
sched.add_job(my_job, 'date', run_date=datetime(2009, 11, 6, 16, 30, 5), args=['text'])
2.2 interval
- weeks (int) – 等待的周数
- days (int) – 等待的月数
- hours (int) – 等待的小时数
- minutes (int) – 等待的分钟数
- seconds (int) – 等待的秒数t
- start_date (datetime|str) – 间隔计算的起点
- end_date (datetime|str) – 间隔计算的终点
- timezone (datetime.tzinfo|str) – 时区
- jitter (int|None) – 最多将作业执行延迟几秒钟
示例:
# 从2014年10月10日9:30开始,到2014年06月15日11:00结束,每两个小时执行一次
sched.add_job(job_function, 'interval', hours=2, start_date='2010-10-10 09:30:00', end_date='2014-06-15 11:00:00')
2.3 cron
- year (int|str) – 四位数的年
- month (int|str) – 1-12月
- day (int|str) – 月份中的一天 (1-31)
- week (int|str) – ISO week (1-53)
- day_of_week (int|str) – 工作的日的编号名称 (0-6 or mon,tue,wed,thu,fri,sat,sun)
- hour (int|str) – 小时 (0-23)
- minute (int|str) – 分钟 (0-59)
- second (int|str) – 秒 (0-59)
- start_date (datetime|str) – 最早触发的日期/时间(包括)
- end_date (datetime|str) – 结束任务的时间,默认该日期的00:00:00
- timezone (datetime.tzinfo|str) – 用于日期/时间计算的时区(默认为调度程序时区)
- jitter (int|None) – 最多将作业执行延迟几秒钟
注:
1.如果没有设置,默认为,表示:any,每一时间
2.在month和day_of_week接受英文简写月和星期名(jan-dec和mon-sun)
示例1:
#设置job_function在第三个星期五运行在6月、7月、8月、11月和12月的00:00、01:00、02:00和03:00
sched.add_job(job_function, 'cron', month='6-8,11-12', day='3rd fri', hour='0-3')
示例2:
#从周一到周五早上5:30,直到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')
3.示例
# 生成一个定时器对象
sched = BlockingScheduler()
# 定时器对象中添加一个定时任务
sched.add_job(run_spider, 'cron', day_of_week='mon-fri', hour=10, minute=36, end_date='2021-4-23 10:41:00')
开启定时器
sched.start()