Python定時執(zhí)行程序問題(schedule)
Python定時執(zhí)行程序(schedule)
使用schedule庫
import schedule
import time
def job():
print("I'm working...")
schedule.every(10).seconds.do(job) # 每10秒執(zhí)行一次
schedule.every().wednesday.at("13:15").do(job) # 每周三13點15執(zhí)行
schedule.every(10).minutes.do(job) # 每10分鐘執(zhí)行一次
schedule.every().hour.do(job) # 每小時執(zhí)行一次
schedule.every().day.at("10:30").do(job) # 每天十點半執(zhí)行
schedule.every(5).to(10).minutes.do(job) # 每5-10分鐘隨機執(zhí)行一次
schedule.every().monday.do(job) # 每周一執(zhí)行
schedule.every().minute.at(":17").do(job) # 每分鐘的17秒執(zhí)行一次
while True:
schedule.run_pending() # 運行所有可運行的任務如果是要定在4:30執(zhí)行,一定要寫schedule.every().day.at("04:30").do(job)
而不能只寫schedule.every().day.at("4:30").do(job)
注意,如果程序執(zhí)行的時間要比你設(shè)定的時間間隔短,就是下一次定時程序開始執(zhí)行的時候你上一次程序還沒有執(zhí)行完的話,就會新開進程。
進程堆疊多了就會成災難
python定時執(zhí)行任務(schedule)時間延遲踩坑實錄
通過schedule設(shè)置定時執(zhí)行某個任務
import schedule
import time
# 定義某個任務
def job():
...
# 設(shè)置執(zhí)行時間
schedule.every().seconds.do(job) # 每秒執(zhí)行一次任務
schedule.every().minutes.do(job) # 每分鐘執(zhí)行一次任務
schedule.every().hour.do(job) # 每小時執(zhí)行一次任務
# 可以指定具體時間間隔
schedule.every(10).minutes.do(job) # 每10分鐘執(zhí)行一次任務
# 設(shè)置每天某一時刻執(zhí)行
schedule.every().day.at("05:15").do(job) # 每天凌晨5點15分執(zhí)行任務
# 設(shè)置星期幾執(zhí)行
schedule.every().monday.at("05:15").do(job) # 每周一凌晨5點15分執(zhí)行任務
while True:
schedule.run_pending() # 運行所有可運行的任務踩坑問題
第一個注意的點是,你要先在手動運行程序來開啟服務(此時程序會暫停),然后才會在指定時間繼續(xù)執(zhí)行。
第二個注意的點是,在使用時,因為程序運行時間的存在,會出現(xiàn)時間延遲問題。比如通過代碼設(shè)置每10分鐘跑一次,
schedule.every(10).minutes.do(job) # 每10分鐘執(zhí)行一次任務
結(jié)果出現(xiàn)


但是即下一次執(zhí)行時間是從上一次程序運行結(jié)束時間+10min來的,而我希望的應該是從上一次程序開始運行+10min,即正確的應該是10:20:21,這樣下去會導致時間延遲越來越大。
解決方法
只需要加上一個具體時刻(這里設(shè)置的是15s):
schedule.every(10).minutes.at(":15").do(job) # 每10分鐘過15s執(zhí)行程序也就是說,在10:00:21開啟服務,
第一次執(zhí)行 10:10:15,
第二次執(zhí)行 10:20:15,
第三次執(zhí)行 10:30:15,
…
這樣就解決了程序運行時間導致的時間延遲問題。
注意!??! 首次開啟服務,一定要在當前時間的15秒之后運行程序,才是正常的。
比如在10:00:08開啟服務,下一次會在10:09:15分執(zhí)行(異常)
比如在10:00:21開啟服務,下一次會在10:10:15分執(zhí)行(正常)
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
python如何獲取Prometheus監(jiān)控數(shù)據(jù)
這篇文章主要介紹了python如何獲取Prometheus監(jiān)控數(shù)據(jù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-05-05
解決Tensorboard可視化錯誤:不顯示數(shù)據(jù) No scalar data was found
今天小編就為大家分享一篇解決Tensorboard可視化錯誤:不顯示數(shù)據(jù) No scalar data was found,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02

