模块:
一个python文件就是一个模块
1、自己写的py文件
2、系统导入的
3、第三方的
python的重试模块
我们写代码的时候,经常会用到重试,如果出错了,或者出现了其他的问题,就重试一次或者N次,自己写实现起来比较复杂,用retrying模块就可容易的解决了
pip install retrying #安装
下面是重试的例子:
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
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()
|
|
|
|
|