1. 程式人生 > 其它 >python 包之 APScheduler 定時任務教程

python 包之 APScheduler 定時任務教程

一、安裝

pip install apscheduler

 

二、定時執行一次

  • 新建一個scheduler排程器

  • 新增一個job store排程任務

  • 執行排程任務

import datetime
from apscheduler.schedulers.blocking import BlockingScheduler

def task(name):
    print('%s告訴你現在時間是:%s' . format(name, datetime.datetime.now()))
    
# 該任務將會在2022-05-20 13:14:52執行一次
scheduler = BlockingScheduler()
scheduler.add_job(task, 'date', run_date=datetime.datetime(2022, 5, 20, 13, 14, 52), args=['autofelix'], id='task')
scheduler.start()

 

三、間隔執行

  • 當你排程作業的時候,你需要為這個作業選擇一個觸發器,用來描述這個作業何時被觸發

  • date 一次性指定日期

  • interval 在某個時間範圍內間隔多長時間執行一次

from apscheduler.schedulers.blocking import BlockingScheduler

def task():
	print('我是飛兔小哥')

# 每隔10秒數執行一次
scheduler = BlockingScheduler()
scheduler.add_job(task, 'interval', seconds=10, id='task')
scheduler.start()

 

四、每日定時執行一次

  • cron 和Linux crontab格式相容,最為強大

from apscheduler.schedulers.blocking import BlockingScheduler

f = open('status.text', 'a', encoding='utf8')
sc = BlockingScheduler()
@sc.scheduled_job('cron', day_of_week='*', hour=1, minute='30', second='50')

if name == '__main__':
  try:
  	sc.start()
  	f.write('定時任務成功執行')
  except Exception as e:
  	sc.shutdown()
  	f.write('定時任務執行失敗')
  finally:
  	f.close()

 

五、每幾分鐘執行一次

  • /2:每隔2分鐘執行一次

  • /1:每隔1分鐘執行一次

from apscheduler.schedulers.blocking import BlockingScheduler

def task():
	print('你的任務每隔2分鐘執行一次')

scheduler = BlockingScheduler()
scheduler.add_job(job1, 'cron', minute="/2", id='task')
scheduler.start()

 

六、每小時執行一次

  • jitter:代表可以上下浮動的秒數

from apscheduler.schedulers.blocking import BlockingScheduler

def task():
	print('你的任務每隔1小時執行一次')

scheduler = BlockingScheduler()
scheduler.add_job(task, 'interval', hours=1, id='task')
# scheduler.add_job(task, 'interval', hours=1, id='task', jitter=120)
scheduler.start()

 

七、排程器分類

  • BlockingScheduler : 當排程器是你應用中唯一要執行的東西時

  • BackgroundScheduler : 當你沒有執行任何其他框架並希望排程器在你應用的後臺執行時使用(充電樁即使用此種方式)

  • AsyncIOScheduler : 當你的程式使用了asyncio(一個非同步框架)的時候使用

  • GeventScheduler : 當你的程式使用了gevent(高效能的Python併發框架)的時候使用

  • TornadoScheduler : 當你的程式基於Tornado(一個web框架)的時候使用

  • TwistedScheduler : 當你的程式使用了Twisted(一個非同步框架)的時候使用

  • QtScheduler : 如果你的應用是一個Qt應用的時候可以使用