我們寫代碼的時候,經常會用到重試,如果出錯了,或者出現了其他的問題,就重試一次或者N次,自己寫實現起來比較復雜,用retrying模塊就可以很容易的解決了。
1 pip install retrying #安裝
下面是幾個重試的例子,直接看代碼
import requests from retrying import retry count = 0 @retry(stop_max_attempt_number=3)#重試次數 def test(): #這個函數只是個例子,先判斷下count不等於1的話,就把count的值賦成1 #然后主動拋出一個異常,如果這個函數里面出現異常了,他就會自動重試 #超過最大重試次數之后,如果還不成功,就會拋出錯誤了 #會重試一次 global count print('run') if count !=1: count=1 raise Exception('出錯了') test() count2 = 0 @retry(stop_max_attempt_number=3)#重試次數 def test2(): #這個例子就可以看出來,重試了3次,第三次沒有成功,就報錯了 global count2 print('run') if count2 !=5: count2+=1 raise Exception('出錯了') test2() @retry(stop_max_attempt_number=3,stop_max_delay=1000) #stop_max_attempt_number最大重試次數, 兩次, stop_max_delay是兩次重試間隔多少毫秒,這里我寫的間隔1秒 def test3(): '''比如說測試某個接口的時候,如果超時或者其他問題需要重試,就可以這么寫''' r = requests.get('http://url',{'xx':'xx'}) #如果這里出現異常了,比如說超時,他就會自動重試 if '請稍后重試' in r.text: #自己判斷什么時候重試,比如說服務端返回某個信息,就主動拋出一個異常,這樣它就會自動重試 raise Exception('服務端現在有點問題') test3()
轉自:牛牛雜貨鋪