如果在发送请求时,因为网络抖动,从而导致当前的框架误报,应该怎么处理?
接口自动化的超时重试机制
1.超时设置
在发送请求时,加一个timeout参数
url=https://www.baidu.com
data={"username":"test22","password":"123456"}
response=requests.post(url=url,data=data,timeout=3)
设置超时时间为3s
2.重试retrying
retrying是一个python库,用来处理程序中的重试逻辑,retry库中的Retry类可以设置重试次数、异常类型、间隔时间等。
安装 pip install retrying
@retry(stop_max_attempt_number=3,wait_fixed=1000,retry_on_result=lambda x:x is None)
def request_with_retry(url):
try:
response=requests.get(url,timeout=3)
if response.status_code==200:
return response.json()
else:
return None
except Exception as e:
print("requests failed:",{e})
request_with_retry("https://www.baidu.com") ```
使用retry装饰器为函数request_with_retry添加重试逻辑,`stop_max_attempt_number`定义了最大重试次数,`wait_fixed`定义重试之间的时间间隔,`retry_on_result`定义了返回结果是None时进行重试