欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python retrying模塊的使用方法詳解

 更新時(shí)間:2019年09月25日 09:53:41   作者:python學(xué)習(xí)開發(fā)  
這篇文章主要介紹了python retrying模塊的使用方法詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

前言

我們?cè)趯懪老x的過程中,經(jīng)常遇到爬取失敗的情況,這個(gè)時(shí)候我們一般會(huì)通過try塊去進(jìn)行重試,但是每次都寫那么一堆try塊,真的是太麻煩,所以今天就來說一個(gè)比較pythonic的模塊,retrying.

安裝

retrying模塊的安裝很簡(jiǎn)單直接用匹配安裝即可。

pip install retrying

retring模塊通過裝飾器的形式來進(jìn)行重試操作的,首先我們看一個(gè)簡(jiǎn)單的例子

from retrying import retry
@retry(stop_max_attempt_number=5,wait_random_min=1000,wait_random_max=5000)
def run():
  print("開始重試")
  raise NameError

if __name__ == '__main__':
  run()

上面的代碼干了哪些事呢,首先導(dǎo)入retring的retry模塊

然后裝飾一個(gè)run函數(shù),然后調(diào)用run,函數(shù)內(nèi)容很簡(jiǎn)單就是通過raise拋出一個(gè)異常,執(zhí)行該代碼我們發(fā)現(xiàn)。程序打印了五次開始重試,最后一次拋出異常,NameError。

到這里我們可以感受到重試了,就是這么簡(jiǎn)單的代碼,就完成了五次重試,同時(shí)這五次重試的間隔時(shí)間也是不同的。

如果想嘗試10次就把上面的stop_max_attempt_number=5,改成10即可,到這里就可以解釋retry裝飾器的參數(shù)了

stop_max_attempt_number:最大重試次數(shù),超過這個(gè)次數(shù)會(huì)停止重試,并報(bào)異常。

wait_random_min:隨機(jī)等待最小時(shí)間。

wait_random_max:隨機(jī)等待最大時(shí)間。

好了retry的使用就是這么簡(jiǎn)單,在需要重試的函數(shù)上面加個(gè)裝飾器就好了。

關(guān)鍵是裝飾器里的參數(shù)的使用,下面列舉了retrying的參數(shù)。

如果不寫參數(shù)將會(huì)一直重試.

stop_max_attempt_number:在停止之前嘗試的最大次數(shù),最后一次如果還是有異常則會(huì)拋出異常,停止運(yùn)行,默認(rèn)為5次

@retry(stop_max_attempt_number=5)
def run():
  print("開始重試")
  raise NameError

if __name__ == '__main__':
  run()

強(qiáng)調(diào)總次數(shù)。

stop_max_delay:最大延遲時(shí)間,大概意思就是:如果調(diào)用的函數(shù)出現(xiàn)異常,那么就會(huì)重復(fù)調(diào)用這個(gè)函數(shù),最大調(diào)用時(shí)間,默認(rèn)為100毫秒

from retrying import retry
@retry(stop_max_delay=5000)
def run():
  print("開始重試")
  raise NameError
if __name__ == '__main__':
  run()

會(huì)重試5秒鐘,強(qiáng)調(diào)總時(shí)間。

wait_fixed:兩次調(diào)用方法期間停留時(shí)長(zhǎng), 如果出現(xiàn)異常則會(huì)一直重復(fù)調(diào)用,默認(rèn) 1000毫秒

from retrying import retry
@retry(wait_fixed=2000)
def run():
  print("開始重試")
  raise NameError
if __name__ == '__main__':
  run()

強(qiáng)調(diào)間隔時(shí)間。

wait_random_min:在兩次調(diào)用方法停留時(shí)長(zhǎng),停留最短時(shí)間,默認(rèn)為0

wait_random_max:在兩次調(diào)用方法停留時(shí)長(zhǎng),停留最長(zhǎng)時(shí)間,默認(rèn)為1000毫秒

wait_incrementing_increment:每調(diào)用一次則會(huì)增加的時(shí)長(zhǎng),默認(rèn) 100毫秒

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

retry_on_exception: 指定一個(gè)函數(shù),如果此函數(shù)返回指定異常,則會(huì)重試,如果不是指定的異常則會(huì)退出

from retrying import retry
def run2(exception):
  return isinstance(exception, ZeroDivisionError)
@retry(retry_on_exception=run2)
def run():
  print("開始重試")
  a = 1 / 0
if __name__ == '__main__':
  run()

retry_on_result:指定一個(gè)函數(shù),如果指定的函數(shù)返回True,則重試,否則拋出異常退出

from retrying import retry
def run2(r):
  return isinstance(r, int)
@retry(retry_on_result=run2)
def run():
  print("開始重試")
  a = 1
  return a
if __name__ == '__main__':
  run()

wrap_exception:參數(shù)設(shè)置為True/False,如果指定的異常類型,包裹在RetryError中,會(huì)看到RetryError和程序拋的Exception error

stop_func: 每次拋出異常時(shí)都會(huì)執(zhí)行的函數(shù),如果和stop_max_delay、stop_max_attempt_number配合使用,則后兩者會(huì)失效

指定的stop_func會(huì)有兩個(gè)參數(shù):attempts, delay

wait_func:和stop_func用法差不多,不多描述

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Django csrf 驗(yàn)證問題的實(shí)現(xiàn)

    Django csrf 驗(yàn)證問題的實(shí)現(xiàn)

    csrf是通過偽裝來自受信任用戶的請(qǐng)求來利用受信任的網(wǎng)站。這篇文章主要介紹了Django csrf 驗(yàn)證問題的實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-10-10
  • Python圖像處理庫(kù)PIL詳細(xì)使用說明

    Python圖像處理庫(kù)PIL詳細(xì)使用說明

    Pillow是Python中較為基礎(chǔ)的圖像處理庫(kù),主要用于圖像的基本處理,比如裁剪圖像、調(diào)整圖像大小和圖像顏色處理等,需要的朋友可以參考下
    2022-04-04
  • python圖形界面tkinter的使用技巧

    python圖形界面tkinter的使用技巧

    這篇文章主要介紹了python圖形界面tkinter的使用技巧,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • python一些性能分析的技巧

    python一些性能分析的技巧

    這篇文章主要介紹了python一些性能分析的技巧,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-08-08
  • Python 中的pygame安裝與配置教程詳解

    Python 中的pygame安裝與配置教程詳解

    這篇文章主要介紹了Python 中的pygame安裝與配置,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Python簡(jiǎn)易圖形界面庫(kù)easygui對(duì)話框整理大全

    Python簡(jiǎn)易圖形界面庫(kù)easygui對(duì)話框整理大全

    這篇文章主要給大家介紹了關(guān)于Python簡(jiǎn)易圖形界面庫(kù)easygui對(duì)話框的相關(guān)資料,EasyGUI是一個(gè)用Python編寫的非常簡(jiǎn)易的GUI編程模塊,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • python實(shí)現(xiàn)RSA加密(解密)算法

    python實(shí)現(xiàn)RSA加密(解密)算法

    RSA是目前最有影響力的公鑰加密算法,它能夠抵抗到目前為止已知的絕大多數(shù)密碼攻擊,已被ISO推薦為公鑰數(shù)據(jù)加密標(biāo)準(zhǔn),下面通過本文給大家介紹python實(shí)現(xiàn)RSA加密(解密)算法,需要的朋友參考下
    2016-02-02
  • 使用Python的Twisted框架構(gòu)建非阻塞下載程序的實(shí)例教程

    使用Python的Twisted框架構(gòu)建非阻塞下載程序的實(shí)例教程

    Twisted的異步工作模式使其在非阻塞情況下可以擁有較高的性能,這里我們來看一下使用Python的Twisted框架構(gòu)建非阻塞下載程序的實(shí)例教程,包括服務(wù)器端與客戶端的實(shí)踐.
    2016-05-05
  • python中多個(gè)裝飾器的執(zhí)行順序詳解

    python中多個(gè)裝飾器的執(zhí)行順序詳解

    裝飾器是程序開發(fā)中經(jīng)常會(huì)用到的一個(gè)功能,也是python語(yǔ)言開發(fā)的基礎(chǔ)知識(shí)。這篇文章主要介紹了python中多個(gè)裝飾器的執(zhí)行順序詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-10-10
  • Python常見排序操作示例【字典、列表、指定元素等】

    Python常見排序操作示例【字典、列表、指定元素等】

    這篇文章主要介紹了Python常見排序操作,結(jié)合實(shí)例形式總結(jié)分析了Python針對(duì)字典、列表及指定元素等常見排序操作實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2018-08-08

最新評(píng)論