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


最近需要寫個日更新的程序,用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 則累計的任務全部跑一遍


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM