python自動(dòng)重試第三方包retrying模塊的方法
retrying是一個(gè)python的重試包,可以用來(lái)自動(dòng)重試一些可能運(yùn)行失敗的程序段,retrying提供一個(gè)裝飾器函數(shù)retry,被裝飾的函數(shù)就會(huì)在運(yùn)行失敗的情況下重新執(zhí)行,默認(rèn)只要一直報(bào)錯(cuò)就會(huì)不斷重試。
最近寫了一個(gè)爬蟲,需要連接國(guó)外的一個(gè)網(wǎng)站,經(jīng)常出現(xiàn)掉線的情況,自己寫了一個(gè)自動(dòng)重連的代碼,但感覺不夠簡(jiǎn)潔。。。
后來(lái)就上萬(wàn)能的github,找到了一個(gè)第三包,基本能滿足我的要求。這個(gè)第三方包就是retrying.
我的需求就是每當(dāng)出現(xiàn)request相關(guān)異常的時(shí)候,就自動(dòng)重來(lái),上限連接10次;使用代碼如下:
from retrying import retry def is_request_exception(e): return issubclass(type(e),RequestException) @retry(retry_on_exception=is_request_exception,wrap_exception=False, stop_max_attempt_number=10) def request_get(url, timeout=120): return requests.get(url, timeout=120)
剛開始用的時(shí)候,也遇到一些坑,就是在request_get
用了try..except,導(dǎo)致不成功。后來(lái)刪除就可以了。。。
我理解,在retring包中,已經(jīng)有exception處理了,如果你的代碼中有了exception處理,retring就沒有捕獲異常,就沒法達(dá)到期望的結(jié)果了。
retrying還有非常多的自定義參數(shù),如果等待時(shí)長(zhǎng)控制,總共等待時(shí)間控制等等,暫時(shí)還沒有這么特別的要求,等需要的時(shí)候,我再去研究一下。
總結(jié)
以上所述是小編給大家介紹的python自動(dòng)重試第三方包retrying模塊的方法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
pytorch 彩色圖像轉(zhuǎn)灰度圖像實(shí)例
今天小編就為大家分享一篇pytorch 彩色圖像轉(zhuǎn)灰度圖像實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01pandas 中對(duì)特征進(jìn)行硬編碼和onehot編碼的實(shí)現(xiàn)
今天小編就為大家分享一篇pandas 中對(duì)特征進(jìn)行硬編碼和onehot編碼的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12利用Python進(jìn)行數(shù)據(jù)可視化常見的9種方法!超實(shí)用!
這篇文章主要給大家介紹了關(guān)于利用Python進(jìn)行數(shù)據(jù)可視化常見的9種方法!文中介紹的方法真的超實(shí)用!對(duì)大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07Python Datetime模塊和Calendar模塊用法實(shí)例分析
這篇文章主要介紹了Python Datetime模塊和Calendar模塊用法,結(jié)合實(shí)例形式分析了Python日期時(shí)間及日歷相關(guān)的Datetime模塊和Calendar模塊原理、用法及操作注意事項(xiàng),需要的朋友可以參考下2019-04-04Django2 連接MySQL及model測(cè)試實(shí)例分析
這篇文章主要介紹了Django2 連接MySQL及model測(cè)試,結(jié)合實(shí)例形式分析了Django2框架使用pymysql庫(kù)進(jìn)行mysql數(shù)據(jù)庫(kù)連接與model調(diào)用測(cè)試方法,需要的朋友可以參考下2019-12-12在Python的一段程序中如何使用多次事件循環(huán)詳解
循環(huán)是我們?cè)谌粘i_發(fā)中是必不可少會(huì)遇到的,下面這篇文章主要給大家介紹了關(guān)于在Python的一段程序中如何使用多次事件循環(huán)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-09-09Django集成Celery實(shí)現(xiàn)高效的異步任務(wù)處理的全過(guò)程
Django?作為一個(gè)強(qiáng)大的?Python?Web?框架,可以通過(guò)集成?Celery?這一異步任務(wù)隊(duì)列來(lái)優(yōu)化這些任務(wù)的處理,本文將深入探討如何在?Django?項(xiàng)目中集成?Celery,包括?Celery?的基本配置、定義任務(wù)、以及監(jiān)控任務(wù)執(zhí)行,需要的朋友可以參考下2023-11-11