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

python retrying模塊的使用方法詳解

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

前言

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

安裝

retrying模塊的安裝很簡單直接用匹配安裝即可。

pip install retrying

retring模塊通過裝飾器的形式來進行重試操作的,首先我們看一個簡單的例子

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模塊

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

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

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

stop_max_attempt_number:最大重試次數(shù),超過這個次數(shù)會停止重試,并報異常。

wait_random_min:隨機等待最小時間。

wait_random_max:隨機等待最大時間。

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

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

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

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

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

if __name__ == '__main__':
  run()

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

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

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

會重試5秒鐘,強調(diào)總時間。

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

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

強調(diào)間隔時間。

wait_random_min:在兩次調(diào)用方法停留時長,停留最短時間,默認為0

wait_random_max:在兩次調(diào)用方法停留時長,停留最長時間,默認為1000毫秒

wait_incrementing_increment:每調(diào)用一次則會增加的時長,默認 100毫秒

wait_exponential_multiplier和wait_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ù)返回指定異常,則會重試,如果不是指定的異常則會退出

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:指定一個函數(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中,會看到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)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python中的pip命令安裝與使用輕松入門教程

    Python中的pip命令安裝與使用輕松入門教程

    pip是Python的包管理工具,用于安裝、卸載和管理第三方庫,本文詳細介紹了pip的安裝和使用方法,包括檢查pip是否已安裝、手動安裝或升級pip以及pip的基本使用,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-11-11
  • Python實現(xiàn)生成帶logo背景圖的二維碼

    Python實現(xiàn)生成帶logo背景圖的二維碼

    這篇文章主要為大家詳細介紹了如何利用Python實現(xiàn)生成帶logo背景圖的二維碼(靜態(tài)和動態(tài)圖),文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2023-05-05
  • Python進階之自定義對象實現(xiàn)切片功能

    Python進階之自定義對象實現(xiàn)切片功能

    這篇文章主要介紹了Python進階之自定義對象實現(xiàn)切片功能,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • Python基礎(chǔ)Lists和tuple實例詳解

    Python基礎(chǔ)Lists和tuple實例詳解

    這篇文章主要為大家介紹了Python基礎(chǔ)Lists和tuple實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • python爬取網(wǎng)頁數(shù)據(jù)到保存到csv

    python爬取網(wǎng)頁數(shù)據(jù)到保存到csv

    大家好,本篇文章主要講的是python爬取網(wǎng)頁數(shù)據(jù)到保存到csv,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • python3安裝OCR識別庫tesserocr過程圖解

    python3安裝OCR識別庫tesserocr過程圖解

    這篇文章主要介紹了python3安裝OCR識別庫tesserocr過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • Python中Proxypool庫的安裝與配置

    Python中Proxypool庫的安裝與配置

    今天小編就為大家分享一篇關(guān)于Python中Proxypool庫的安裝與配置,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • Python中日志模塊logging的使用技巧和應(yīng)用詳解

    Python中日志模塊logging的使用技巧和應(yīng)用詳解

    在Python開發(fā)中,日志記錄是一個非常重要的環(huán)節(jié),它不僅有助于開發(fā)者追蹤程序的執(zhí)行流程,還能在出現(xiàn)問題時提供關(guān)鍵信息,幫助快速定位并解決問題,本文將結(jié)合實際案例,詳細介紹logging模塊的基礎(chǔ)用法和高級特性,需要的朋友可以參考下
    2024-08-08
  • Python for循環(huán)通過序列索引迭代過程解析

    Python for循環(huán)通過序列索引迭代過程解析

    這篇文章主要介紹了Python for循環(huán)通過序列索引迭代過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • Python模擬百度登錄實例詳解

    Python模擬百度登錄實例詳解

    最近公司產(chǎn)品和百度貼吧合作搞活動,為了增加人氣,打算做個自動簽到的小程序,接下來通過本文給大家介紹python模擬百度登錄,感興趣的朋友一起學(xué)習(xí)本段代碼吧
    2016-01-01

最新評論

满洲里市| 博乐市| 五原县| 当涂县| 蒙阴县| 沾化县| 彭州市| 揭阳市| 伊金霍洛旗| 邵阳市| 达孜县| 邢台县| 广灵县| 青冈县| 车致| 南开区| 甘南县| 临夏县| 鸡西市| 麻城市| 深水埗区| 通道| 景泰县| 洛浦县| 眉山市| 济阳县| 泾阳县| 星子县| 泸州市| 宽甸| 兴山县| 扶余县| 新密市| 阿拉善盟| 黑山县| 泌阳县| 拜城县| 扶余县| 临清市| 寿宁县| 九江市|