天天看點

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

繼續閱讀