Python 排程器 schedule 套件示範

schedule 是 Python 中非常容易使用的排程套件,目標功能很單純,就是實現定時排程,但是缺少了比較「進階」的用途,例如紀錄排程(每次啟動程式都需要重新設定)、併發執行等,不過已經非常足夠使用。

安裝套件

    
pip install schedule
    

動態執行

每五秒執行:
    
import schedule


def job():
    print("工作中")
    
    
if __name__ == '__main__':

    schedule.every(5).seconds.do(job)

    while True:
        schedule.run_pending()
        time.sleep(1)
    

every 後面可以使用的參數:
  • seconds: 秒
  • minutes: 分鐘
  • hours: 小時
  • days: 天
  • weeks: 每周
  • monday: 星期一
  • tuesday: 星期二
  • wednesday: 星期三
  • thursday: 星期四
  • friday: 星期五
  • saturday: 星期六
  • sunday: 星期日

註: 單位除了星期幾(星期一到星期天)以外都可以使用單數或是複數,例如 second 和 seconds,不過單數的話前面的 every 必須要不帶參數或是參數為 1 ,不然會拋出錯誤,所以筆者習慣直接使用複數的單位

常見範例:
    
# 每分鐘的 31 秒執行
schedule.every().minute.at(":31").do(job)

# 每小時的 49 分 59 秒執行
schedule.every().hours.at("49:59").do(job2)

# 每天的 23 點 49 分 59 秒執行
schedule.every().days.at("23:49:59").do(job3)
    

使用裝飾器執行

假設有固定的排程,可以使用裝飾器定義執行週期,然後在程式啟動時執行 run_pending 即可:
    
import schedule
from schedule import every, repeat


@repeat(every(1).seconds)
def job():
    print("工作中")
    
    
if __name__ == '__main__':

    while True:
        schedule.run_pending()
        time.sleep(1)
    



參考資料:
schedule
GitHub - dbader/schedule

留言