Python實現定時任務

2021-10-10 04:45:43 字數 3596 閱讀 9695

工作中可能需要週期性執行一些任務,俗稱定時任務。linux環境下,可以借助於系統自帶的crontab完成定時任務。但是很多時候,開發人員可能並沒有許可權去操作crontab。而schedule是python的輕量級定時任務解決方案,可以滿足常定時採集資料,定時執行指令碼程式等週期性任務需求。

pip install schedule

每10分鐘執行一次job函式

schedule.every(10).minutes.do(test)

每10秒執行一次job函式

schedule.every(10).seconds.do(test)

每10小時執行一次job函式

schedule.every(10). hours.do(test)

每10天執行一次job函式

schedule.every(10). days.do(test)

每10周執行一次job函式

schedule.every(10). weeks.do(test)

當every()沒引數時預設是1小時執行一次job函式

schedule.every().hour.do(test)

當every()沒引數時預設是分鐘執行一次job函式

schedule.every().minute.do(test)

當every()沒引數時預設是1秒執行一次job函式

schedule.every().second.do(test)

當every()沒引數時預設是1天執行一次job函式

schedule.every().day.do(test)

當every()沒引數時預設是1周執行一次job函式

schedule.every().week.do(test)

案例演示

from datetime import datetime

import time

import schedule

def job1(*args):

print("i'm working...")

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)

if __name__ == '__main__':

while true:

# 啟動服務

schedule.run_pending()

time.sleep(1)

表示每天10:30執行任務

schedule.every().day.at("10:30").do(test)

每週一執行一次job函式

schedule.every().monday.do(test)

每週三13:15執行一次job函式

schedule.every().wednesday.at("13:15").do(test)

案例演示

from datetime import datetime

import time

import schedule

def job1(*args):

print("i'm working...")

with open('tasks', 'a') as f:

f.write('[{}]{}\n'.format(datetime.now().strftime('%y-%m-%d %h:%m:%s.%f'), 'msg'))

# 每天9:30執行任務

schedule.every().day.at('09:30').do(job1)

if __name__ == '__main__':

while true:

# 啟動服務

schedule.run_pending()

time.sleep(1)

在任務最後加上這句話就行,return schedule.canceljob

案例演示

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)

import datetime

import schedule

import time

def job1():

print("i'm working for job1")

time.sleep(2)

print("job1:", datetime.datetime.now())

def job2():

print("i'm working for job2")

time.sleep(2)

print("job2:", datetime.datetime.now())

def run():

schedule.every(10).seconds.do(job1)

schedule.every(10).seconds.do(job2)

if __name__ == '__main__':

run()

while true:

schedule.run_pending()

time.sleep(1)

import datetime

import schedule

import threading

import time

def job1():

print("i'm working for job1")

time.sleep(2)

print("job1:", datetime.datetime.now())

def job2():

print("i'm working for job2")

time.sleep(2)

print("job2:", datetime.datetime.now())

def job1_task():

threading.thread(target=job1).start()

def job2_task():

threading.thread(target=job2).start()

def run():

schedule.every(10).seconds.do(job1_task)

schedule.every(10).seconds.do(job2_task)

if __name__ == '__main__':

run()

while true:

schedule.run_pending()

time.sleep(1)

Python實現定時任務

python下實現定時任務的方式有很多種方式。下面介紹幾種 迴圈sleep 這是一種最簡單的方式,在迴圈裡放入要執行的任務,然後sleep一段時間再執行。缺點是,不容易控制,而且sleep是個阻程式設計客棧塞函式。def timer n 每n秒執行一次 while true print time.s...

Python定時任務實現

定時執行任務,定時 pip install schedule import schedule import time 不帶引數定時執行 def job print i m working.schedule.every 10 seconds.do job 每10秒執行一次 schedule.every...

python定時任務

說明 使用python內建的模組來實現,本篇部落格只是以迴圈定時來示範,其他的可以結合crontab的風格自己設定 一 導包 from apscheduler.schedulers.blocking import blockingscheduler二 普通函式的使用 1 interval模式,功能比...