天天看点

apscheduler定时器的使用

一、依赖

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

继续阅读