欢迎访问宙启技术站
智能推送

Pythonrequests.packages.urllib3.util.retryRetry()方法使用教程

发布时间:2023-12-11 11:30:45

Python的requests库中提供了一个用于重试请求的Retry类,位于requests.packages.urllib3.util.retry模块中。Retry类可以在发生请求失败的情况下重新尝试发送请求,以提高请求的成功率。本教程将向你详细介绍Retry类的使用方法,并提供一些使用例子。

Retry类的初始化参数:

- total:重试的最大次数,默认为3。

- backoff_factor: 延迟因子,决定下次重试的等待时间,默认为0。

- status_forcelist: 需要进行重试的HTTP状态码列表,默认为[500, 502, 503, 504]

- method_whitelist:需要进行重试的HTTP请求方法列表,默认为['HEAD', 'GET', 'PUT', 'POST', 'DELETE', 'OPTIONS', 'TRACE']

- redirect:是否重试重定向请求,默认为False。

- raise_on_redirect:如果为True,重试重定向时会抛出重试错误,默认为False。

- raise_on_status:如果为True,重试请求返回非2XX的状态码时会抛出重试错误,默认为True。

- status_ignored:忽略重试的HTTP状态码列表,默认为None。

Retry类的使用方法:

1. 导入Retry类:

   from requests.packages.urllib3.util.retry import Retry
   

2. 创建Retry对象:

   retry = Retry(total=3, backoff_factor=0.1, status_forcelist=[500, 502, 503, 504])
   

3. 将Retry对象应用于requests的Session对象:

   import requests
   from requests.adapters import HTTPAdapter

   session = requests.Session()
   adapter = HTTPAdapter(max_retries=retry)
   session.mount('http://', adapter)
   session.mount('https://', adapter)
   

此时,session对象将使用Retry对象进行请求重试。

4. 发送请求:

   response = session.get('https://www.example.com')
   

如果请求失败,Retry对象将自动尝试重新发送请求。

完整例子:

import requests
from requests.packages.urllib3.util.retry import Retry
from requests.adapters import HTTPAdapter

retry = Retry(total=3, backoff_factor=0.1, status_forcelist=[500, 502, 503, 504])

session = requests.Session()
adapter = HTTPAdapter(max_retries=retry)
session.mount('http://', adapter)
session.mount('https://', adapter)

response = session.get('https://www.example.com')
print(response.status_code)

该例子中,Retry对象的total参数设置为3,表示最大重试次数为3次;backoff_factor参数设置为0.1,表示每次重试之间的等待时间会乘以0.1,以实现逐渐增长的延迟机制;status_forcelist参数设置为[500, 502, 503, 504],表示当请求返回这些状态码时会进行重试;最后,通过Session对象和HTTPAdapter对象将Retry对象应用于请求过程中,并发送一个GET请求。

这就是Retry类的使用教程和一个使用例子。你可以根据自己的需求调整Retry对象的参数,从而实现更加灵活的请求重试机制。