Python中異常重試的解決方案詳解

2022-06-23 16:03:14 字數 1449 閱讀 2959

?1

2345

67defretry_if_io_error(exception):

returnisinstance(exception, ioerror)

@retry(retry_on_exception=retry_if_io_error)

defread_a_file():

withopen("file","r") as f:

returnf.read()

在執行read_a_file函式的過程中,如果報出異常,那麼這個異常會以形參exception傳入retry_if_io_error函式中,如果exceptionioerror那麼就進行retry,如果不是就停止執行並丟擲異常。

我們還可以指定要在得到哪些結果的時候去retry,這個要用retry_on_result傳入乙個函式物件:?1

2345

6defretry_if_result_none(result):

returnresultisnone

@retry(retry_on_result=retry_if_result_none)

defget_result():

returnnone

在執行get_result成功後,會將函式的返回值通過形參result的形式傳入retry_if_result_none函式中,如果返回值是none那麼就進行retry,否則就結束並返回函式值。

總結

Python中異常重試的解決方案詳解

前言 大家在做資料抓取的時候,經常遇到由於網路問題導致的程式儲存,先前只是記錄了錯誤內容,並對錯誤內容進行後期處理。原先的流程 def crawl page url pass def log error url pass url try crawl page url except log error...

Python的異常重試方法

專案msb服務不穩定,通過python建立websocket總是會有問題,很不穩定,但是一般來說重新建立連線就能成功,多嘗試幾次就好了。既然有了相應的需求,就要考慮如何去解決這個websocket建立異常重試的問題 原來的 只建立了一次websocket連線 ws.connect url,heade...

python中的重試

安裝 pip install retrying retry 裝飾器會對函式不斷的重試 預設無限重試 retry def pick one print pick t random.randint 0,2 print t if t 1 raise exception 1 is not picked if...