寫后端的同學(xué)們可能都知道,工作中可能需要周期性執(zhí)行一些任務(wù),俗稱定時(shí)任務(wù)。Linux環(huán)境下,可以借助于系統(tǒng)自帶的crontab完成定時(shí)任務(wù)。但是很多時(shí)候,開發(fā)的同學(xué)們可能并沒有權(quán)限去操作crontab,所以就催生了一些不太好的解決方案,比如基于Python/Java里面的Timer去弄一個(gè)周期性執(zhí)行的工具。
很多人學(xué)習(xí)python,不知道從何學(xué)起。
很多人學(xué)習(xí)python,掌握了基本語法過后,不知道在哪里尋找案例上手。
很多已經(jīng)做案例的人,卻不知道如何去學(xué)習(xí)更加高深的知識。
那么針對這三類人,我給大家提供一個(gè)好的學(xué)習(xí)平臺,免費(fèi)領(lǐng)取視頻教程,電子書籍,以及課程的源代碼!
QQ群:101677771
大佬們,醒醒,主角出場了。今天給大家分享一個(gè)Python輕量級定時(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)
就是這么簡單,你學(xué)會了嗎?