# 参考文档
https://urllib3.readthedocs.io/en/latest/reference/urllib3.util.html#module-urllib3.util.retry
# 代码示例
import requests
from urllib3.util.retry import Retry
from requests.adapters import HTTPAdapter
req = requests.Session()
retries = Retry(total=3,
backoff_factor=0.1,
status_forcelist=[500, 502, 503, 504, 521])
req.mount('https://', HTTPAdapter(max_retries=retries))
try:
result = req.get(url="http://httpstat.us/500", verify=False, timeout=5)
if result.status_code == 200:
print("ok")
except requests.exceptions.RetryError: #这边我们捕获尝试连接错误类,其它如具体的类在结合项目的时候会有问题,具体参考自己的项目修改。
print("error")
# 相关Retry参数说明
total 允许的重试次数
connect 要重试的连接相关错误数
read 读取错误时重试多少次
redirect 要执行的重定向数
status_forcelist 一组我们应该强制重试的HTTP状态代码
backoff_factor 在第二次尝试后在尝试之间应用的退避因素(大多数错误会立即通过第二次尝试解决,没有延迟)
raise_on_redirect 如果重定向次数用尽,是否引发 MaxRetryError 或返回响应代码在 3xx 范围内的响应。
raise_on_status 类似于raise_on_redirect:如果状态在status_forcelist范围内并且重试已经用尽,我们是否应该引发异常或返回响应。