python定時(shí)執(zhí)行任務(wù) 輕量級(jí)

作者: loooooong 分類(lèi): python 發(fā)布時(shí)間: 2020-06-17 08:54

python 中有一個(gè)輕量級(jí)的定時(shí)任務(wù)調(diào)度的庫(kù):schedule。他可以完成每分鐘,每小時(shí),每天,周幾,特定日期的定時(shí)任務(wù)。因此十分方便我們執(zhí)行一些輕量級(jí)的定時(shí)任務(wù)。

代碼如下:

import schedule
import time
 3 def job(): 
 4 print("I'm working...")
 5  schedule.every(10).minutes.do(job)
 6  schedule.every().hour.do(job)
 7  schedule.every().day.at("10:30").do(job)
 8  schedule.every(5).to(10).days.do(job)
 9  schedule.every().monday.do(job)
10 schedule.every().wednesday.at("13:15").do(job)
11 while True: 
12 schedule.run_pending() 
13 time.sleep(1)

上面的意思就是:

每隔十分鐘執(zhí)行一次任務(wù)

每隔一小時(shí)執(zhí)行一次任務(wù)

每天的 10:30 執(zhí)行一次任務(wù)

每隔 5 到 10 天執(zhí)行一次任務(wù)

每周一的這個(gè)時(shí)候執(zhí)行一次任務(wù)

每周三 13:15 執(zhí)行一次任務(wù)

run_pending:運(yùn)行所有可以運(yùn)行的任務(wù)

當(dāng)然,如果函數(shù)中帶有參數(shù)怎么辦呢?

很簡(jiǎn)單,如下所示:

 1  import schedule
 2  import time
 3  def job(name):
 4  print("her name is : ", name)
 5  name = xiaona
 6  schedule.every(10).minutes.do(job, name)
 7  schedule.every().hour.do(job, name)
 8  schedule.every().day.at("10:30").do(job, name)
 9  schedule.every(5).to(10).days.do(job, name)
10  schedule.every().monday.do(job, name)
11  schedule.every().wednesday.at("13:15").do(job, name)
12 while True:
13  schedule.run_pending()
14 time.sleep(1)

???時(shí)間是24小時(shí)制,要按標(biāo)準(zhǔn)來(lái)寫(xiě),否則就會(huì)

G`35F7G{2V`N[O9)9AHJO]E

最后改為09:00就ok了

疑問(wèn)解答:

最近有人問(wèn)我 while True 之類(lèi)的是什么意思,很簡(jiǎn)單,如果你去掉 while True 這個(gè)死循環(huán)的話(huà),schedule.run_pending () 是沒(méi)有辦法持續(xù)運(yùn)行的,那么 schedule.run_pending () 是個(gè)什么東西呢 ——

schedule 其實(shí)就只是個(gè)定時(shí)器。在 while True 死循環(huán)中,schedule.run_pending () 是保持 schedule 一直運(yùn)行,去查詢(xún)上面那一堆的任務(wù),在任務(wù)中,就可以設(shè)置不同的時(shí)間去運(yùn)行。跟 linux 中設(shè)置 crontab 定時(shí)任務(wù)是類(lèi)似的。

所以,schedule 有一定的局限性,所以只能用來(lái)執(zhí)行一些小型的定時(shí)任務(wù),它的局限性在哪呢 ——

1. 需要定時(shí)運(yùn)行的函數(shù) job 不應(yīng)當(dāng)是死循環(huán)類(lèi)型的,也就是說(shuō),這個(gè)線(xiàn)程應(yīng)該有一個(gè)執(zhí)行完畢的出口。一是因?yàn)榫€(xiàn)程萬(wàn)一僵死,會(huì)是非常棘手的問(wèn)題;二是下一次定時(shí)任務(wù)還會(huì)開(kāi)啟一個(gè)新的線(xiàn)程,執(zhí)行次數(shù)多了就會(huì)演變成災(zāi)難。

2. 如果 schedule 的時(shí)間間隔設(shè)置得比 job 執(zhí)行的時(shí)間短,一樣會(huì)線(xiàn)程堆積形成災(zāi)難,也就是說(shuō),我 job 的執(zhí)行時(shí)間是 1 個(gè)小時(shí),但是我定時(shí)任務(wù)設(shè)置的是 5 分鐘一次,那就會(huì)一直堆積線(xiàn)程。

如果覺(jué)得我的文章對(duì)您有用,請(qǐng)隨意打賞。您的支持將鼓勵(lì)我繼續(xù)創(chuàng)作!

專(zhuān)欄推薦
主站蜘蛛池模板: 亚洲精品亚洲人成在线播放| 天天爱天天做天天爽| 天堂网www中文在线| 国产一二三在线观看| 亚洲一区二区三区影院| 99久久免费精品高清特色大片 | 亚洲导航深夜福利| ankhazone度盘| 精品国产福利在线观看91啪| 日本xxxxx在线观看| 国产女高清在线看免费观看| 亚洲三级在线看| 777成了人乱视频| 爱搞视频首页在线| 女人被狂c躁到高潮视频| 午夜视频十八嗯嗯啊免费| 久久久久久久综合综合狠狠| 麻豆久久婷婷综合五月国产| 欧美一区二区三区激情| 国产精品无码aⅴ嫩草| 亚洲欧美自拍明星换脸| avtom影院入口永久在线app| 真实子伦视频不卡| 怡红院亚洲怡红院首页| 四虎www成人影院| 中文字幕在线视频第一页| 达达兔午夜起神影院在线观看麻烦| 日韩精品久久无码中文字幕| 国产极品白嫩美女在线观看看| 亚洲一区二区三区影院| 午夜影院小视频| 最近最新视频中文字幕4| 国产熟睡乱子伦视频观看软件| 亚洲中文字幕第一页在线| www视频在线观看免费| 月夜直播在线看片www| 国产精品一区二区资源| 亚洲一区二区在线视频| 日本免费色网站| 日韩精品视频免费在线观看| 国产呦系列免费|