記一次python的任務調度模塊apscheduler只在首次執行任務的情況

轉載自:https://www.cnblogs.com/mswei/p/10006076.html

 

最近需要寫個日更新的程序,用time.sleep()不能很好的控制任務的執行時間

於是,就使用了python的任務調度模塊apscheduler,這個模塊功能真的是很強大

具體的就不多講了

 

將任務程序都設置好,之後,任務只在第一天執行,後面兩天都沒有執行

 

通過仔細檢查log之後,發現了異常

正常的本次運行完,下次的任務執行時間log爲:

144 - 2018-11-23 01:12:10,230 - INFO - Job "SubmitData (trigger: interval[1 day, 0:00:00], next run at: 2018-11-24 01:00:00 CST)" executed successfully

而沒有執行任務的log爲:

2018-11-22 00:00:04,084 base.py[line:120] run_job WARNING Run time of job "start (trigger: interval[1 day, 0:00:00], next run at: 2018-11-23 00:00:01 CST)" was missed by 0:00:03.061840

 

這個log的意思是:距離下次運行時間,錯過了3秒,所有第二次就沒有執行任務

 

解決方法:

scheduler.add_job(start, 'interval', days=1, coalesce=True, misfire_grace_time=3600, start_date='2018-11-23 00:00:01', end_date='2019-12-30 11:59:59')

在add_job()中添加參數:

misfire_grace_time: 主要就是爲了解決這個was missed by 這個報錯,添加允許容錯的時間,單位爲:s

coalesce:如果系統因某些原因沒有執行任務,導致任務累計,爲True則只運行最後一次,爲False 則累計的任務全部跑一遍

 

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