那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

Python中retrying庫的有參數(shù)重試

麥辣雞腿堡 ? 來源:Python都知道 ? 作者:了不起 ? 2023-11-14 11:08 ? 次閱讀

參數(shù)重試

(1)stop_max_attempt_number

在retry中傳入stop_max_attempt_number參數(shù)后可以指定失敗重試的次數(shù)

@retry(stop_max_attempt_number=2)
def func():
    print(f"記錄失敗重試")
    for item in range(0,100):
        result=item / 0
        print(result)
        return result

func()

因為這里我們指定了失敗后進行兩次重試,如果重試執(zhí)行兩次后還是報錯則結束重試,將錯誤信息拋出來。

圖片

**(2)wait_fixed**傳入wati_fixed后,可以指定重試的時間

from retrying import retry
import time

# 設置三秒重試一次
@retry(wait_fixed=3000)  
def func():
    print(f"記錄失敗重試:",time.strftime("%Y-%m-%d %H:%M:%S"))

    result=1 / 0
    print(result)
    return result

func()

圖片

配置重試間隔時間后,成語遇到執(zhí)行失敗或者報錯后,就會根據(jù)設置的重試時間去進行重試執(zhí)行

(3)wait_random_minwait_random_max

通常wait_random_min和wait_random_max是一起搭配使用的,可以設置一個重試等待的時間,然后會在設置的時間區(qū)間內(nèi)隨機取一個等待時間進行重試

from retrying import retry
import time


@retry(wait_random_min=1000,wait_random_max=9000)
def func():
    print(f"記錄失敗重試:",time.strftime("%Y-%m-%d %H:%M:%S"))

    result=1 / 0
    print(result)
    return result

func()

圖片

(4)wait_exponential_multiplierwait_exponential_max

官方解釋為:以指數(shù)的形式產(chǎn)生兩次retrying之間的停留時間, 產(chǎn)生的值為2^previous_attempt_number * wait_exponential_multiplier, previous_attempt_number是前面已經(jīng)retry的次數(shù), 如果產(chǎn)生的這個值超過了wait_exponential_max的大小, 那么之后兩個retrying之間的停留值都為wait_exponential_max

通俗來點講就是每次重試的時間以wait_exponential_multiplier設置的值2,如果重試后還是失敗則繼續(xù)2,直到最后的值等于或則超過wait_exponential_max設置的值后,后面的每一次重試等待時間都是wait_exponential_max設置的值

from retrying import retry
import time

@retry(wait_exponential_multiplier=1000,wait_exponential_max=10000)
def func():
    print(f"記錄失敗重試:",time.strftime("%Y-%m-%d %H:%M:%S"))

    result=1 / 0
    print(result)
    return result

func()

圖片

(5)wait_func

在前面介紹的參數(shù)都是如何配置失敗沖重試的等待時間或者重試次數(shù)之類的,但是我們不能時時刻刻盯著程序,在程序代碼發(fā)生錯誤時我們應該要進行發(fā)送短信或者郵件之類的提醒才行

在這里就可以使用到wait_func參數(shù),它接收一個可執(zhí)行函數(shù),返回一個具體的間隔時間數(shù)值,單位ms。接收的函數(shù)須接收兩個參數(shù):attempt_number當前運行次數(shù),delay_since_first_attempt_ms當前重試機制運行時間(單位ms)

from retrying import retry
import time


def func_demo(attempt_number,delay_since_first_attempt_ms):
    print("函數(shù)運行失敗后運行該函數(shù)")

    if attempt_number == 5:
        print("已經(jīng)重試失敗五次了,開始準備發(fā)送提醒")

    if attempt_number == 10:
        print("已經(jīng)重試失敗超10次了,發(fā)送郵件給相關人員緊急處理")

    if attempt_number  >10:
        print("重試時間過長,做一些其他臨時方案進行補救")

    # return一個重試的時間
    return 2000


@retry(wait_func=func_demo)
def func():
    print(f"記錄失敗重試:",time.strftime("%Y-%m-%d %H:%M:%S"))

    result=1 / 0

    return result

func()

圖片

使用wait_func通過調(diào)用其他可執(zhí)行的函數(shù),我們可以借助它來做一些臨時的補救措施,避免程序一直無法運行而產(chǎn)生的影響。

(6)其他參數(shù)

在retry中還存在有很多參數(shù),有興趣的小伙伴可以去詳細了解下

圖片

  • stop_max_attempt_number:在停止之前嘗試的最大次數(shù),最后一次如果還是有異常則會拋出異常,停止運行,默認為5次
  • stop_max_delay:最大延遲時間,大概意思就是:如果調(diào)用的函數(shù)出現(xiàn)異常,那么就會重復調(diào)用這個函數(shù),最大調(diào)用時間,默認為100毫秒
  • wait_fixed:兩次調(diào)用方法期間停留時長, 如果出現(xiàn)異常則會一直重復調(diào)用,默認 1000毫秒
  • wait_random_min:在兩次調(diào)用方法停留時長,停留最短時間,默認為0
  • wait_random_max:在兩次調(diào)用方法停留時長,停留最長時間,默認為1000毫秒
  • wait_incrementing_increment:每調(diào)用一次則會增加的時長,默認 100毫秒
  • wait_exponential_multiplierwait_exponential_max:以指數(shù)的形式產(chǎn)生兩次「retrying」之間的停留時間,產(chǎn)生的值為2^previous_attempt_number * wait_exponential_multiplier,previous_attempt_number是前面已經(jīng)「retry」的次數(shù),如果產(chǎn)生的這個值超過了wait_exponential_max的大小,那么之后兩個「retrying」之間的停留值都為wait_exponential_max
  • retry_on_exception: 指定一個函數(shù),如果此函數(shù)返回指定異常,則會重試,如果不是指定的異常則會退出
  • retry_on_result:指定一個函數(shù),如果指定的函數(shù)返回True,則重試,否則拋出異常退出
  • wrap_exception:參數(shù)設置為True/False,如果指定的異常類型,包裹在RetryError中,會看到RetryError和程序拋的Exception error
  • stop_func: 每次拋出異常時都會執(zhí)行的函數(shù),如果和stop_max_delay、stop_max_attempt_number配合使用,則后兩者會失效 (指定的stop_func會有兩個參數(shù):attempts, delay)
  • wait_func:和stop_func用法差不多。
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)據(jù)庫

    關注

    7

    文章

    3846

    瀏覽量

    64685
  • 函數(shù)
    +關注

    關注

    3

    文章

    4346

    瀏覽量

    62973
  • python
    +關注

    關注

    56

    文章

    4807

    瀏覽量

    85039
收藏 人收藏

    評論

    相關推薦

    常用Python那些38個常用Python的詳細概述

    Python作為一個設計優(yōu)秀的程序語言,現(xiàn)在已廣泛應用于各種領域,依靠其強大的第三方類Python在各個領域都能發(fā)揮巨大的作用。
    的頭像 發(fā)表于 11-03 10:28 ?3.1w次閱讀

    ADM1266 Python

    ADM1266 Python
    發(fā)表于 03-23 15:47 ?1次下載
    ADM1266 <b class='flag-5'>Python</b><b class='flag-5'>庫</b>

    詳解Python的Pandas和Numpy

    pandas、numpy是Python數(shù)據(jù)科學中非常常用的,numpy是Python的數(shù)值計算擴展,專門用來處理矩陣,它的運算效率比列表更高效。
    的頭像 發(fā)表于 05-25 12:49 ?2676次閱讀

    如何在RocketMQ合理使用重試機制

    RocketMQ 的重試機制包括三部分,分別是生產(chǎn)者重試,服務端內(nèi)部數(shù)據(jù)復制遇到非預期問題時重試,消費者消費重試
    的頭像 發(fā)表于 11-23 10:15 ?1175次閱讀

    如何安裝常用Python

    Python作為一種流行的編程語言,擁有豐富的第三方資源,這些可以幫助開發(fā)者輕松實現(xiàn)各種功能,從數(shù)據(jù)分析到Web開發(fā),從機器學習到圖像處理,涵蓋了各個領域。在Python的開發(fā)過程
    的頭像 發(fā)表于 04-14 12:11 ?1214次閱讀

    SQLite數(shù)據(jù)python的區(qū)別

    、數(shù)據(jù)科學等方面。SQLite數(shù)據(jù)Python之間很多不同之處,下面將詳細解析它們之間的區(qū)別。 1. 數(shù)據(jù)類型 SQLite是一種關系型數(shù)據(jù)
    的頭像 發(fā)表于 08-28 16:41 ?913次閱讀

    python什么用 如何用python創(chuàng)建數(shù)據(jù)

    python什么用 如何用python創(chuàng)建數(shù)據(jù) Python是一種高級編程語言,可以用于開發(fā)各種類型的應用程序和工具。它的廣泛應用使它在
    的頭像 發(fā)表于 08-28 16:41 ?1238次閱讀

    python讀取數(shù)據(jù)數(shù)據(jù) python查詢數(shù)據(jù) python數(shù)據(jù)連接

    ,獲取數(shù)據(jù)的數(shù)據(jù),并對數(shù)據(jù)進行增刪改查等操作。本文將詳細介紹Python如何連接數(shù)據(jù)、讀取數(shù)據(jù)數(shù)據(jù)以及如何進行查詢操作。 一、
    的頭像 發(fā)表于 08-28 17:09 ?1904次閱讀

    Pythonoloredlogs的使用

    coloredlogs介紹 coloredlogs是一個Python,它允許開發(fā)人員在控制臺打印彩色日志。這個的主要優(yōu)點是它可以很容易地改變?nèi)罩鞠⒌念伾瑥亩谷罩靖子陂喿x和理解。這對
    的頭像 發(fā)表于 10-07 11:28 ?899次閱讀
    <b class='flag-5'>Python</b><b class='flag-5'>庫</b><b class='flag-5'>中</b>oloredlogs的使用

    Python 在什么情況下才進行重試

    如何寫得優(yōu)雅、易用,是我們要考慮的問題。 這里要給大家介紹的是一個第三方 - Tenacity (標題中的重試機制并并不準確,它不是 Python 的內(nèi)置模塊,因此并不能稱之為機制),它實現(xiàn)了幾乎我們可以使用到的所有
    的頭像 發(fā)表于 10-21 11:18 ?398次閱讀

    Tenacity重試模塊實踐

    如何寫得優(yōu)雅、易用,是我們要考慮的問題。 這里要給大家介紹的是一個第三方 - Tenacity ,它實現(xiàn)了幾乎我們可以使用到的所有重試場景,比如: 在什么情況下才進行重試重試幾次
    的頭像 發(fā)表于 11-02 11:33 ?447次閱讀

    Python關于retrying的使用

    到使用try except來進行異常捕捉進行失敗重試(Retry)。雖然try-escept一個非常常見和有效的方式來增強程序穩(wěn)定性,但是可能一不小心就會造成棧溢出。 所以接下來我就來介紹一個另外的一個專門用于失敗重試
    的頭像 發(fā)表于 11-14 11:01 ?559次閱讀

    python如何引入math

    Python,要使用math,首先需要先引入它。mathPython的一個標準,它提
    的頭像 發(fā)表于 11-22 11:03 ?4427次閱讀

    python第三方哪些

    Python 作為一門功能強大的編程語言,擁有豐富的第三方,幾乎覆蓋了各個領域的應用。下面是一些常見且廣泛應用的 Python 第三方的總結,希望能為您提供幫助。 NumPy(Nu
    的頭像 發(fā)表于 11-29 14:31 ?2229次閱讀

    小三軸荷重試驗機是什么?哪些介紹

    小三軸荷重試驗機是什么?哪些介紹
    的頭像 發(fā)表于 12-07 09:09 ?488次閱讀
    小三軸荷<b class='flag-5'>重試</b>驗機是什么?<b class='flag-5'>有</b>哪些介紹
    清水县| 百家乐官网代理龙虎| 百家乐官网用什么平台| 葡京百家乐玩法| 百家乐官网不锈钢| 百家乐讲谈| 离岛区| 百家乐游戏官网| 大发888网页登录| 如何胜百家乐官网的玩法技巧和规则| 百家乐如何捕捉长龙| 百家乐官网的庄闲概率| 新澳博百家乐现金网| kk娱乐城开户| 百家乐出租平台| 金盈娱乐| 电玩百家乐官网游戏机路单| 金字塔百家乐的玩法技巧和规则| 百家乐官网金币游戏| 新澳门百家乐软件下载| 百家乐官网技术下载| 百家乐反缆公式| 大世界百家乐官网现金网| 新澳门百家乐的玩法技巧和规则 | 百家乐平注7s88| 百家乐官网筹码多少钱| 百家乐几点不用补牌| 百家乐官网椅子| 悠哉棋牌游戏大厅| 百家乐视频台球下载| 百家乐官网试玩网站| 威尼斯人娱乐城网站| 红桃K百家乐官网娱乐城| 百家乐技巧| 蓝盾百家乐平台| 全迅网百家乐官网的玩法技巧和规则 | 金博士百家乐的玩法技巧和规则| 载大发888软件| 百家乐书包| 百家乐官网威尼斯人| 娱网棋牌|