寫(xiě)后端的同學(xué)們可能都知道,工作中可能需要周期性執(zhí)行一些任務(wù)旅急,俗稱定時(shí)任務(wù)逢勾。Linux環(huán)境下,可以借助于系統(tǒng)自帶的crontab完成定時(shí)任務(wù)藐吮。但是很多時(shí)候溺拱,開(kāi)發(fā)的同學(xué)們可能并沒(méi)有權(quán)限去操作crontab,所以就催生了一些不太好的解決方案谣辞,比如基于Python/Java里面的Timer去弄一個(gè)周期性執(zhí)行的工具迫摔。
很多人學(xué)習(xí)python,不知道從何學(xué)起泥从。
很多人學(xué)習(xí)python句占,掌握了基本語(yǔ)法過(guò)后,不知道在哪里尋找案例上手躯嫉。
很多已經(jīng)做案例的人纱烘,卻不知道如何去學(xué)習(xí)更加高深的知識(shí)。
那么針對(duì)這三類人和敬,我給大家提供一個(gè)好的學(xué)習(xí)平臺(tái)凹炸,免費(fèi)領(lǐng)取視頻教程,電子書(shū)籍昼弟,以及課程的源代碼啤它!
QQ群:101677771
大佬們,醒醒,主角出場(chǎng)了变骡。今天給大家分享一個(gè)Python輕量級(jí)定時(shí)任務(wù)解決方案离赫,schedule,可以滿足常用的周期性任務(wù)需求塌碌。
安裝
pip install schedule
使用
schedule提供了多種方法去描述執(zhí)行周期渊胸,比如:
1,按照某個(gè)時(shí)間間隔
every(10).seconds.do(task)台妆,表示每隔10秒執(zhí)行task任務(wù)翎猛。當(dāng)然可以把間隔換成其他單位,比如minutes,hours,days
2接剩,按照一個(gè)固定的時(shí)間點(diǎn)
every().day.at('9:30').do(task)切厘,表示每天9:30執(zhí)行任務(wù)
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秒執(zhí)行一次job1
schedule.every(5).seconds.do(job1)
每天9:30執(zhí)行任務(wù)
schedule.every().day.at('09:30').do(job1)
if name == 'main':
while True:
schedule.run_pending()
time.sleep(1)
效果
如何讓任務(wù)只執(zhí)行一次?
只需要在任務(wù)最后加上這句話就行懊缺,return schedule.CancelJob
encoding=utf-8
from datetime import datetime
import time
import scheduledef job_run_once(*args):
print('Job run only once')
#
return schedule.CancelJob
只執(zhí)行一次任務(wù)
schedule.every(3).seconds.do(job_run_once)
if name == 'main':
while True:
schedule.run_pending()
time.sleep(1)
就是這么簡(jiǎn)單疫稿,你學(xué)會(huì)了嗎?