Python 定時執行:schedule 模塊

原文首發於個人站點:隱舍
微信公衆號:DreamHub

參考文檔:https://schedule.readthedocs.io/en/stable/

schedule是一個第三方輕量級的任務調度模塊,可以按照秒,分,小時,日期或者自定義事件執行時間,便於執行輕量級任務。

安裝

pip install schedule

模塊使用

import time
import schedule
import datetime

def job():
      print(datetime.datetime.now(),'I am working...')

schedule.every(10).seconds.do(job)   #每10秒執行一次,如果要加參數,只需在job後面加上參數
schedule.every(10).minutes.do(job)        # 每10分鐘執行一次
schedule.every().hour.do(job)             # 每小時執行一次
schedule.every().day.at("10:30").do(job)  # 每天十點半執行
schedule.every(5).to(10).minutes.do(job)  # 5-10分鐘隨機執行一次
schedule.every().monday.do(job)           # 每週一執行
schedule.every().wednesday.at("13:15").do(job)     # 每週三13點15執行
schedule.every().minute.at(":17").do(job)          # 每分鐘17秒時執行
while True:
      schedule.run_pending()
      time.sleep(1)

PS: 函數帶有參數時在schedule模塊添加:


import schedule
import time
 
def job(name):
    print("her name is : ", name)
 
name = xiaona
schedule.every(10).minutes.do(job, name)
schedule.every().hour.do(job, name)
schedule.every().day.at("10:30").do(job, name)
schedule.every(5).to(10).days.do(job, name)
schedule.every().monday.do(job, name)
schedule.every().wednesday.at("13:15").do(job, name)
 
while True:
    schedule.run_pending()
    time.sleep(1)

侷限性

1.需要定時運行的函數job不應當是死循環類型的,也就是說,這個線程應該有一個執行完畢的出口。一是因爲線程萬一僵死,會是非常棘手的問題;二是下一次定時任務還會開啓一個新的線程,執行次數多了就會演變成災難。

2.如果schedule的時間間隔設置得比job執行的時間短,一樣會線程堆積形成災難,也就是說,我job的執行時間是1個小時,但是我定時任務設置的是5分鐘一次,那就會一直堆積線程。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章