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

Python中pip._vendor.urllib3.util.retry.Retry的超时设置详解

发布时间:2024-01-18 09:17:34

在Python中,urllib3是一个用于处理HTTP请求的库,Retry是其中的一个类,可以用于设置重试请求的行为。Retry类提供了一些参数,可以设置重试的次数、重试的等待时间、是否回避某些错误等。

Retry类的构造函数可以接受以下参数:

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

- connect:重试连接错误的次数,默认为None,表示使用total的值。

- read:重试读取错误的次数,默认为None,表示使用total的值。

- redirect:重试重定向错误的次数,默认为None,表示使用total的值。

- status:重试遇到的特定状态码,默认为(),表示不重试任何状态码。

- method_whitelist:重试的请求方法,默认为('HEAD', 'GET', 'PUT', 'DELETE', 'OPTIONS', 'TRACE', 'PATCH')。

- status_forcelist:替代status的属性,指定仅在status_forcelist中列出的状态码遇到时才重试。

- backoff_factor:重试时的退避因子,默认为0,即无退避。

- backoff_max:重试时的最大等待时间,默认为None。

- raise_on_status:是否在重试遇到状态码时引发MaxRetryError异常,默认为True。

- raise_on_redirect:是否在重试遇到重定向时引发MaxRetryError异常,默认为True。

- raise_on_exception:是否在重试遇到连接错误时引发MaxRetryError异常,默认为False。

- status_on_redirect:应显式重试的状态码。

下面是一个使用Retry类的示例代码:

import requests
from pip._vendor.urllib3.util.retry import Retry
from requests.adapters import HTTPAdapter

# 创建Retry对象
retry = Retry(total=5, backoff_factor=0.1, status_forcelist=[ 500, 502, 503, 504 ])

# 创建一个Session对象
session = requests.Session()

# 将Retry对象和Session对象关联起来
adapter = HTTPAdapter(max_retries=retry)
session.mount('http://', adapter)
session.mount('https://', adapter)

# 使用Session对象发送请求
response = session.get('https://www.example.com')

# 打印响应内容
print(response.text)

在上面的示例中,首先创建了一个Retry对象,设置最大重试次数为5次,重试时的退避因子为0.1。然后创建了一个Session对象,并将Retry对象和Session对象进行关联。接下来使用Session对象发送HTTP请求,会自动进行重试操作。最后打印了响应内容。

通过设置Retry对象的参数,可以灵活地控制重试行为。比如,可以在遇到500、502、503、504等状态码时进行重试,可以设置最大重试次数和退避因子来控制重试的次数和等待时间。还可以设置是否在遇到错误时引发异常,以及要重试的请求方法等。

综上所述,Retry类提供了一种方便的方式来控制HTTP请求的重试行为,可以根据实际需求进行灵活的配置。