Python定時任務輕量解決方案---Schedule


寫后端的同學們可能都知道,工作中可能需要周期性執行一些任務,俗稱定時任務。Linux環境下,可以借助於系統自帶的crontab完成定時任務。但是很多時候,開發的同學們可能並沒有權限去操作crontab,所以就催生了一些不太好的解決方案,比如基於Python/Java里面的Timer去弄一個周期性執行的工具。

大佬們,醒醒,主角出場了。今天給大家分享一個Python輕量級定時任務解決方案,schedule,可以滿足常用的周期性任務需求。

安裝

pip install schedule

使用

schedule提供了多種方法去描述執行周期,比如:

#1,按照某個時間間隔

every(10).seconds.do(task),表示每隔10秒執行task任務。當然可以把間隔換成其他單位,比如minutes,hours,days

#2,按照一個固定的時間點

every().day.at('9:30').do(task),表示每天9:30執行任務

#encoding=utf-8
from datetime import datetime
import time
import schedule


def job1(*args):
    with open('tasks', 'a') as f:
        f.write('[{}]{}\n'.format(datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f'), 'msg'))


# 每隔5秒執行一次job1
schedule.every(5).seconds.do(job1)
# 每天9:30執行任務
schedule.every().day.at('09:30').do(job1)


if __name__ == '__main__':
    while True:
        schedule.run_pending()
        time.sleep(1)

效果

 

 

如何讓任務只執行一次?

只需要在任務最后加上這句話就行,return schedule.CancelJob

#encoding=utf-8
from datetime import datetime
import time
import schedule

def job_run_once(*args): print('Job run only once') # return schedule.CancelJob # 只執行一次任務 schedule.every(3).seconds.do(job_run_once) if __name__ == '__main__': while True: schedule.run_pending() time.sleep(1)


免責聲明!

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



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