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

python自動化測試中APScheduler?Flask的應(yīng)用示例

 更新時間:2022年07月21日 17:07:22   作者:opentest-oper@#  
這篇文章主要為大家介紹了python自動化測試中APScheduler?Flask的應(yīng)用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

使用背景

實際項目中,需要驗證打點數(shù)據(jù)在各個系統(tǒng)中收集是否一致,而部分節(jié)點打點數(shù)據(jù)收集是通過異步任務(wù)實現(xiàn)的,等待時間比較久。為應(yīng)對業(yè)務(wù)異步操作處理,實現(xiàn)異步數(shù)據(jù)的收集,經(jīng)過調(diào)研后,選擇了 APScheduler 框架。

什么是 APScheduler 框架?

APScheduler 是基于 Quartz(一個功能豐富的開源任務(wù)調(diào)度系統(tǒng)) 的一個 Python 定時任務(wù)框架,使用起來簡單且方便,提供了基于日期、固定時間間隔以及 crontab 類型的任務(wù),并且可以持久化任務(wù),基于這些功能可以快速實現(xiàn) python 的定時輪詢?nèi)蝿?wù)系統(tǒng)。

使用 APScheduler 框架,可以通過 pip 安裝

pip install apscheduler

APScheduler 框架包含四個組成部分

觸發(fā)器 (trigger)觸發(fā)器包含調(diào)度邏輯,每一個作業(yè)有它自己的觸發(fā)器,用于決定接下來哪一個作業(yè)會運行;除了他們自己初始的配置,觸發(fā)器本身是無狀態(tài)的。

作業(yè)存儲 (job store)作業(yè)存儲存儲被調(diào)度的作業(yè),默認(rèn)的作業(yè)存儲是簡單的將作業(yè)保存到內(nèi)存中,如果選擇其他方式也可以將作業(yè)保存到數(shù)據(jù)庫中;一個作業(yè)數(shù)據(jù)的保存將會在持久化作業(yè)存儲的時候被序列化,然后在加載時被反序列化;調(diào)度器無法分享同一個作業(yè)存儲。

執(zhí)行器 (executor)執(zhí)行器處理作業(yè)的運行,一般通過在作業(yè)中提交制定好的可調(diào)用對象到一個線程中或者線程池中來執(zhí)行;在作業(yè)完成時,執(zhí)行器會去通知調(diào)度器。

調(diào)度器 (scheduler)調(diào)度器是 APScheduler 的核心,所有相關(guān)的組件都要通過它來定義,已配置好的任務(wù)也是要通過它來調(diào)度。

APScheduler 在 flask 中使用

因為 scheduler 任務(wù)需要耗費較多時間,因此當(dāng)在項目中收到 flask 的接口請求后,可以通過線程異步處理耗時任務(wù),先將 “正在處理” 作為接口結(jié)果返回,
示例代碼結(jié)構(gòu)如下:

編寫任務(wù)函數(shù),開始 APScheduler 的調(diào)度

在通過 flask 接口拿到需要的任務(wù)參數(shù)后,便可以創(chuàng)建調(diào)度任務(wù)。在創(chuàng)建調(diào)度任務(wù)之前,我們需要確定要選擇哪一種調(diào)度器、job 存儲、執(zhí)行器和觸發(fā)器,
調(diào)度器的選擇主要基于編程環(huán)境以及 APScheduler 的用途,

這里我們根據(jù)需要選擇 BackgroundScheduler。

在 job 存儲的選擇上,需要根據(jù)自己的 job 是否需要持久化,因為沒有特殊的需求,所以使用默認(rèn)的內(nèi)存方式

執(zhí)行器的選擇需要依據(jù) job 的類型,默認(rèn)的線程池執(zhí)行器apscheduler.executors.pool.ThreadPoolExecutor 已經(jīng)可以滿足大多數(shù)情況。

管理 job 的調(diào)度方式需要選擇一個合適的觸發(fā)器,APScheduler 內(nèi)置三種觸發(fā)器;

因為我們的自動化需要對各個子環(huán)節(jié)進行驗證,當(dāng)上一個環(huán)節(jié)成功后才能進行下一個環(huán)節(jié)的驗證,因此選擇 apscheduler.triggers.interval,以固定的時間間隔運行 job。

部分項目代碼

periodic_task 是項目中的任務(wù)調(diào)度函數(shù);首先實例化了一個 BackgroundScheduler 調(diào)度器,接著向調(diào)度器添加 job,添加的 job 為 data_task 函數(shù),同時定義了 job 的觸發(fā)器,指定固定的時間間隔為 58 秒。

其中 data_task 描述了具體的 job 細(xì)節(jié),即分別判斷當(dāng)前不同的任務(wù)節(jié)點執(zhí)行相應(yīng)的驗證過程,并將每一步的驗證狀態(tài)記錄到數(shù)據(jù)庫中,這樣在下一次執(zhí)行 data_task 時,就可以去校驗新的環(huán)節(jié);

啟動調(diào)度器使用 start 函數(shù),結(jié)束調(diào)度器使用 shutdown 函數(shù);

shutdown 函數(shù)可以指定停止條件,在本項目中,因為步驟比較多,一旦有環(huán)節(jié)出錯,就需要結(jié)束任務(wù),保存已驗證的環(huán)節(jié),因此在拿到任務(wù)結(jié)果時,不論是整個驗證成功的結(jié)果,還是某個環(huán)節(jié)出錯的結(jié)果,都會停止本次調(diào)度,結(jié)束掉本次驗證。

總結(jié)

  • APScheduler 在 flask 中使用需要用到線程池異步去處理耗時任務(wù);
  • 使用 APScheduler 需要配置好合適的調(diào)度器、job 存儲、執(zhí)行器和觸發(fā)器;
  • 在業(yè)務(wù)中驗證復(fù)雜連續(xù)的步驟可以使用輪詢的方式,并設(shè)置好任務(wù)結(jié)束的條件,不僅可以校驗每一步的驗證結(jié)果而且有環(huán)節(jié)出錯也不影響整個流程。

以上就是python自動化測試中APScheduler Flask的應(yīng)用示例的詳細(xì)內(nèi)容,更多關(guān)于python自動化測試APScheduler Flask的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python while循環(huán)使用else語句代碼實例

    Python while循環(huán)使用else語句代碼實例

    這篇文章主要介紹了Python while循環(huán)使用else語句代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • 簡單介紹Python中的JSON模塊

    簡單介紹Python中的JSON模塊

    這篇文章主要介紹了簡單介紹Python中的JSON模塊,包括初步的從Python中的數(shù)據(jù)格式轉(zhuǎn)換為JSON格式等,需要的朋友可以參考下
    2015-04-04
  • Python數(shù)據(jù)分析之彩票的歷史數(shù)據(jù)

    Python數(shù)據(jù)分析之彩票的歷史數(shù)據(jù)

    這篇文章主要介紹了Python數(shù)據(jù)分析之彩票的歷史數(shù)據(jù),文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)python的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • python編寫的最短路徑算法

    python編寫的最短路徑算法

    本文給大家分享的是python 無向圖最短路徑算法:請各位大大指教,繼續(xù)改進。(修改了中文字符串,使py2exe中文沒煩惱),需要的朋友可以參考下
    2015-03-03
  • opencv 獲取rtsp流媒體視頻的實現(xiàn)方法

    opencv 獲取rtsp流媒體視頻的實現(xiàn)方法

    這篇文章主要介紹了opencv 獲取rtsp流媒體視頻的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 分位數(shù)回歸模型quantile regeression應(yīng)用詳解及示例教程

    分位數(shù)回歸模型quantile regeression應(yīng)用詳解及示例教程

    這篇文章主要為大家介紹了介紹了分位數(shù)回歸quantile regeression的概念詳解及代碼示例教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-11-11
  • Python實現(xiàn)動態(tài)二維碼生成的示例代碼

    Python實現(xiàn)動態(tài)二維碼生成的示例代碼

    這篇文章主要和大家分享兩個制作二維碼的Python庫,可以生成普通的二維碼、圖片背景版二維碼、動圖GIF版二維。文中的示例代碼講解詳細(xì),感興趣的可以學(xué)習(xí)一下
    2022-05-05
  • python兒童學(xué)游戲編程知識點總結(jié)

    python兒童學(xué)游戲編程知識點總結(jié)

    在本文里小編給大家整理了關(guān)于python兒童學(xué)游戲編程知識點以及內(nèi)容總結(jié),需要的朋友們參考學(xué)習(xí)下。
    2019-06-06
  • Python list列表中刪除多個重復(fù)元素操作示例

    Python list列表中刪除多個重復(fù)元素操作示例

    這篇文章主要介紹了Python list列表中刪除多個重復(fù)元素操作,結(jié)合實例形式分析了Python刪除list列表重復(fù)元素的相關(guān)操作技巧與注意事項,需要的朋友可以參考下
    2019-02-02
  • 簡單了解Java Netty Reactor三種線程模型

    簡單了解Java Netty Reactor三種線程模型

    這篇文章主要介紹了簡單了解Java Netty Reactor三種線程模型,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04

最新評論

新津县| 阿图什市| 庐江县| 衢州市| 濮阳市| 西吉县| 芜湖县| 呼伦贝尔市| 聂拉木县| 乌苏市| 巴里| 普兰店市| 建德市| 交城县| 满洲里市| 北流市| 济阳县| 曲沃县| 景谷| 合山市| 凤翔县| 方正县| 大姚县| 洛浦县| 沾化县| 宁武县| 手机| 营口市| 巧家县| 措勤县| 晋宁县| 卢龙县| 霸州市| 西贡区| 上蔡县| 灵川县| 宜阳县| 镇原县| 乌什县| 博爱县| 溧阳市|