我们写代码的时候,经常会用到重试,如果出错了,或者出现了其他的问题,就重试一次或者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()
转自:牛牛杂货铺
