python各種擴充套件庫學習
阿新 • • 發佈:2022-04-11
一、錯誤重試庫
我們再寫編寫程式(尤其是與網路請求相關程式)時,比如執行網路爬蟲任務時,經常會遇到偶爾發生請求失敗的情況。這時若只是簡單的捕捉錯誤然後
一)錯誤重試庫之retry或retrying的retry方法
1、retry的retry方法
安裝retry庫 pip install retry
可配置引數
def retry(exceptions=Exception, tries=-1, delay=0, max_delay=None, backoff=1, jitter=0, logger=logging_logger): """Return a retry decorator.:param exceptions:捕獲異常或異常元組。 預設:Exception。 :param tries:Exception最大嘗試次數。 預設值:-1(無限)。 :param delay:嘗試之間的初始延遲。 預設值:0。 :param max_delay:延遲的最大值。 預設值:無(無限制)。 :param backoff:乘法器應用於嘗試之間的延遲。 預設值:1(無退避)。 :param jitter:額外的秒數新增到嘗試之間的延遲。 預設值:0。 如果數字固定,則隨機如果範圍元組(最小值,最大值) :param logger:logger.warning(fmt,error,delay)將在失敗嘗試中呼叫。 預設值:retry.logging_logger。 如果無,則記錄被禁用。 """
引用庫
from retry import retry @retry() def make_trouble(): print('retrying') raise if __name__ == '__main__': make_trouble()
2、retrying的retry方法
安裝retrying庫 pip install retrying
重要引數
stop_max_attempt_number:在停止之前嘗試的最大次數,最後一次如果還是有異常則會丟擲異常,停止執行,預設為5次
wait_random_min:在兩次呼叫方法停留時長,停留最短時間,預設為0,單位毫秒
wait_random_max:在兩次呼叫方法停留時長,停留最長時間,預設為1000毫秒
retry_on_result:指定一個函式,如果指定的函式返回True,則重試,否則丟擲異常退出
retry_on_exception: 指定一個函式,如果此函式返回指定異常,則會重試,如果不是指定的異常則會退出
引用庫
from retrying import retry @retry() def make_trouble(): print('retrying') raise if __name__ == '__main__': make_trouble()
二)錯誤重試庫之tenacity
安裝庫 pip install tenacity
引用庫
import random from tenacity import retry @retry def demo_func1(): a = random.random() print(a) if a >= 0.1: raise Exception demo_func1()