?1
2345
67def
retry_if_io_error(exception):
return
isinstance
(exception, ioerror)
@retry
(retry_on_exception
=
retry_if_io_error)
def
read_a_file():
with
open
(
"file"
,
"r"
) as f:
return
f.read()
在執行read_a_file
函式的過程中,如果報出異常,那麼這個異常會以形參exception
傳入retry_if_io_error
函式中,如果exception
是ioerror
那麼就進行retry
,如果不是就停止執行並丟擲異常。
我們還可以指定要在得到哪些結果的時候去retry
,這個要用retry_on_result
傳入乙個函式物件:?1
2345
6def
retry_if_result_none(result):
return
result
is
none
@retry
(retry_on_result
=
retry_if_result_none)
def
get_result():
return
none
在執行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...