最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python定時任務(wù)實現(xiàn)方案

 更新時間:2021年11月05日 15:09:39   作者:米洛丶  
這篇文章主要介紹了Python定時任務(wù)實現(xiàn)的方案,定時執(zhí)行的任務(wù),可以是一段bash命令,也可以是一個腳本文件。通常用于我們需要在特定時刻做事情,下面來看看文章詳細內(nèi)容,需要的朋友可以參考一下

我正在從0到1打造一個開源的接口測試平臺, 也在編寫一套與之對應(yīng)的完整教程,希望大家多多支持。

1、定時任務(wù)

定時任務(wù),顧名思義: 定時執(zhí)行的任務(wù),可以是一段bash命令,也可以是一個腳本文件。通常用于我們需要在特定時刻做事情。

舉個例子: 每晚8點執(zhí)行全業(yè)務(wù)場景接口自動化回歸測試,又或者每隔20分鐘去你家QQ農(nóng)場偷菜!

2、Python的定時任務(wù)

如果是大中型公司,一定有對應(yīng)的平臺讓大家接入。一般這樣的平臺的名字或者描述都是: 分布式任務(wù)調(diào)度平臺這樣的。再不濟還有jenkins滿足我們的需求~

想起博主以前"小時候"(剛工作的時候),公司既沒有用jenkins,也沒有這樣的大平臺可以接入。我是怎么做定時任務(wù)的呢?

來看一段代碼:

import time
from datetime import datetime

def func():
    # 這個是定時任務(wù)要執(zhí)行的ui/接口自動化方法
    pass

def main():
    while True:
      # 獲取當(dāng)前時間
      now = datetime.now()
      if now.hour == 20 and now.minute == 0:
          # 當(dāng)時間到達晚上8點0分,我們就開始跑自動化任務(wù)啦
          print("任務(wù)開始執(zhí)行")
          func()
      time.sleep(60)
      
      
if __name__ == "__main__":
    main()


不知道現(xiàn)在是否還有人依然用著這樣的方式定時執(zhí)行自動化測試,既然都2021年了,那咱們還是先進點吧。那么定時任務(wù)在Python中要怎么做呢?接著看。

2.1 幾種常見的方案

2.1.1 schedule

如果你只是上面提到的簡單訴求,那我建議直接使用schedule庫。這個庫我個人感覺是小學(xué)生版本的升級版,對于我那種局限的sleep任務(wù)做了一些擴展:

  • 支持了按周期執(zhí)行任務(wù)
  • 執(zhí)行時間閱讀起來更人性化
  • 還支持星期X執(zhí)行

安裝scheduler

pip install schedule


官網(wǎng)給出的例子

import schedule
import time

# 定義一個執(zhí)行方法
def job():
    print("I'm working...")

# 每10分鐘執(zhí)行一次job
schedule.every(10).minutes.do(job)
# 每小時執(zhí)行一次job
schedule.every().hour.do(job)
# 每天10:30執(zhí)行job
schedule.every().day.at("10:30").do(job)
# 每個星期一執(zhí)行一次
schedule.every().monday.do(job)
# 每個星期三的13:15執(zhí)行一次
schedule.every().wednesday.at("13:15").do(job)
# 在每分鐘的17秒執(zhí)行一次
schedule.every().minute.at(":17").do(job)


while True:
    # 進入schedule循環(huán)
    schedule.run_pending()
    time.sleep(1)

可以看出,api十分簡單,語義也很清晰。基本可以滿足我們的需求了~如果我們只是要定時去做某些事情的話,我想這個庫非常human。

2.1.2 Jenkins

這個工具相比大家都有所了解吧~jenkins是一個比較強大的軟件了,它可以打通git/svn,也支持定時任務(wù)等。有著豐富的插件,比如郵件,是一套完整的CI/CD解決方案。對于任務(wù)的執(zhí)行結(jié)果的記錄,也是可追溯的。估計唯一的缺點就是,引入了額外的系統(tǒng)。可能本身我只是一個自動化測試框架,現(xiàn)在卻要搭建一套jenkins

如果大家有代碼改動->執(zhí)行定時任務(wù)類似的需求,又需要完善的權(quán)限控制系統(tǒng)的話,那jenkins會是你的不二選擇。

2.1.3 Celery

我對這家伙了解的不太多,但python+celery仿佛成了一個固定搭配。不知道我理解的對不對:

celery是一個任務(wù)隊列,你可以制定好任務(wù)執(zhí)行的規(guī)則,放入隊列中,會有專門的消費端來幫你執(zhí)行這些任務(wù)。

說到這里就不得不提到持久化了~

2.2 題外話之持久化

什么是持久化呢?通俗的講,就是瞬時數(shù)據(jù)(比如內(nèi)存中的數(shù)據(jù),是不能永久保存的)持久化為持久數(shù)據(jù)(比如持久化至數(shù)據(jù)庫中,能夠長久保存)

我們可以把數(shù)據(jù)放到文件里,也可以放到數(shù)據(jù)庫(實際上也是磁盤里)進行持久性保存。

這樣做的目的: 數(shù)據(jù)可以存儲,下次也還能拿到這些數(shù)據(jù)。這里面的內(nèi)容太多了,打算后面再開一節(jié)來講。

我們在Python里面的變量啊,這些數(shù)據(jù)都是存放在內(nèi)存當(dāng)中的,所以我們剛才的schedule是不支持持久化的。(也可能是我沒研究到)

jenkins支持嗎?他是支持的,你想,你建立一個項目,里面有一些job的配置,什么時候執(zhí)行,執(zhí)行了干嘛,最后保存。

上述就是一個持久化的過程。

你保存了數(shù)據(jù)以后,下次能夠獲取到這個項目的任務(wù)信息,也就是說你哪怕重啟了jenkins,任務(wù)依然存在。

說明任務(wù)本身作為了一條數(shù)據(jù),持久地保存了起來。

2.2.1 ApScheduler

"APScheduler是一個Python庫,可讓您安排稍后要執(zhí)行的Python代碼,只需一次或定期執(zhí)行。您可以根據(jù)您添加新的作業(yè)或刪除舊的舊作業(yè)。如果您在數(shù)據(jù)庫中存儲工作,他們還將存活調(diào)度程序重新啟動并保持狀態(tài)。重新啟動調(diào)度程序時,它將運行它在脫機1時應(yīng)該運行的所有作業(yè)。"

這是摘自ApScheduler官網(wǎng)的介紹,總體來說它支持對任務(wù)的增刪改查(持久化),也能很好地支撐定時任務(wù)的執(zhí)行。它相對來說比較輕量,不像celery那么復(fù)雜,也不像schedule那么簡陋。由于我們不打算引入jenkins,所以總體來說,ApScheduler算得上是咱們執(zhí)行定時任務(wù)的不二之選了。

到此這篇關(guān)于Python定時任務(wù)實現(xiàn)方案的文章就介紹到這了,更多相關(guān)Python定時任務(wù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于python+pandoc實現(xiàn)html批量轉(zhuǎn)word

    基于python+pandoc實現(xiàn)html批量轉(zhuǎn)word

    pandoc是一個強大的文檔格式轉(zhuǎn)換工具,支持豐富的格式轉(zhuǎn)換,并盡可能的保留原來的排版,號稱文檔格式轉(zhuǎn)換的瑞士軍刀,本文將給大家介紹一下使用python搭配pandoc實現(xiàn)html批量轉(zhuǎn)word,感興趣的朋友可以參考閱讀下
    2023-09-09
  • 解決Pycharm模塊安裝慢問題的兩種方法

    解決Pycharm模塊安裝慢問題的兩種方法

    很多人在學(xué)習(xí)Python時,都會使用PyCharm這個編譯器,下面這篇文章主要給大家介紹了關(guān)于解決Pycharm模塊安裝慢問題的兩種方法,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2022-12-12
  • python中使用print輸出中文的方法

    python中使用print輸出中文的方法

    今天小編就為大家分享一篇python中使用print輸出中文的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • 分析解決Python中sqlalchemy數(shù)據(jù)庫連接池QueuePool異常

    分析解決Python中sqlalchemy數(shù)據(jù)庫連接池QueuePool異常

    這篇文章主要來給大家分析sqlalchemy數(shù)據(jù)庫連接池QueuePool的異常,給大家用詳細的圖文方式做出了解決的方案,有需要的朋友可以借鑒參考下,希望可以有所幫助
    2021-09-09
  • 查看TensorFlow checkpoint文件中的變量名和對應(yīng)值方法

    查看TensorFlow checkpoint文件中的變量名和對應(yīng)值方法

    今天小編就為大家分享一篇查看TensorFlow checkpoint文件中的變量名和對應(yīng)值方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • 利用Python中unittest實現(xiàn)簡單的單元測試實例詳解

    利用Python中unittest實現(xiàn)簡單的單元測試實例詳解

    如果項目復(fù)雜,進行單元測試是保證降低出錯率的好方法,Python提供的unittest可以很方便的實現(xiàn)單元測試,從而可以替換掉繁瑣雜亂的main函數(shù)測試的方法,將測試用例、測試方法進行統(tǒng)一的管理和維護。本文主要介紹了利用Python中unittest實現(xiàn)簡單的單元測試。
    2017-01-01
  • python進階教程之函數(shù)對象(函數(shù)也是對象)

    python進階教程之函數(shù)對象(函數(shù)也是對象)

    這篇文章主要介紹了python進階教程之函數(shù)對象,函數(shù)對象是指函數(shù)也是對象,本文還講解了lambda函數(shù)、函數(shù)作為參數(shù)傳遞、map()函數(shù)、filter()函數(shù)、reduce()函數(shù)等內(nèi)容,需要的朋友可以參考下
    2014-08-08
  • python pandas 時間日期的處理實現(xiàn)

    python pandas 時間日期的處理實現(xiàn)

    這篇文章主要介紹了python pandas 時間日期的處理實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • python操作MongoDB基礎(chǔ)知識

    python操作MongoDB基礎(chǔ)知識

    MongoDB支持好多語言,今天我們就寫一寫python操作MongoDB的知識,從安裝MongoDB到操作MongoDB全都有了。
    2013-11-11
  • python模塊導(dǎo)入方式淺析步驟

    python模塊導(dǎo)入方式淺析步驟

    這篇文章主要為大家介紹了python中模塊導(dǎo)入的方式,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10

最新評論

桂平市| 博罗县| 布尔津县| 门头沟区| 炎陵县| 吐鲁番市| 江源县| 武汉市| 白朗县| 门头沟区| 环江| 朔州市| 枣强县| 施秉县| 荥经县| 永清县| 丹寨县| 宜春市| 周口市| 长治市| 常德市| 西青区| 石城县| 乌鲁木齐县| 南平市| 丹棱县| 广平县| 安乡县| 共和县| 蓬溪县| 肥乡县| 南通市| 泰安市| 旬阳县| 天门市| 惠东县| 厦门市| 昌乐县| 江陵县| 绍兴市| 高雄市|