1. 程式人生 > 其它 >Python的定時執行模組APScheduler

Python的定時執行模組APScheduler

APScheduler的安裝

pip install apscheduler

APScheduler由四部分組成

  • 觸發器:包含排程邏輯,每一個作業有它自己的觸發器,用於決定接下來哪一個作業會執行。除了他們自己初始配置意外,觸發器完全是無狀態的
  • 作業儲存(job store):儲存被排程的作業,預設的作業儲存是簡單地把作業儲存在記憶體中,其他的作業儲存是將作業儲存在資料庫中。一個作業的資料講在儲存在持久化作業儲存時被序列化,並在載入時被反序列化。排程器不能分享同一個作業儲存
  • 執行器(executor):處理作業的執行,他們通常通過在作業中提交制定的可呼叫物件到一個執行緒或者進城池來進行。當作業完成時,執行器將會通知排程器。
  • 排程器(scheduler):你通常在應用只有一個排程器,應用的開發者通常不會直接處理作業儲存、排程器和觸發器,相反,排程器提供了處理這些的合適的介面。配置作業儲存和執行器可以在排程器中完成,例如新增、修改和移除作業。

應用試例

import time
from apscheduler.schedulers.background import BackgroundScheduler

scheduler = BackgroundScheduler()

def testInterval():
    time.sleep(2)
    print("task start")
# 第一種方式新增任務
scheduler.add_job("testInterval","interval",seconds=5)
scheduler.start()

------------
# 第二種方式新增任務
@scheduler.scheduled_job("interval",seconds=5)
def testInterval():
    time.sleep(2)
    print("task start")

每隔五秒函式會執行一次

刪除任務

  • x = scheduler.add_job("testInterval","interval",seconds=5)
    x.remove()
  • 如果有多個任務序列的話可以給每個任務設定ID號,可以根據ID號選擇清除物件,且remove放到start前才有效
    sched.add_job(myfunc, 'interval', minutes=2, id='my_job_id')
    sched.remove_job('my_job_id')