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

requests.packages.urllib3.util.retryRetry()模块的功能和用法简介

发布时间:2023-12-24 18:04:49

requests.packages.urllib3.util.retry.Retry()模块属于urllib3库的子模块,用于实现HTTP请求的重试功能。它提供了一种简单的方式来自动重试请求,以应对因网络问题、服务器问题或其他原因导致的请求失败。

使用Retry()模块可以很方便地配置重试的次数、延迟时间和重试的条件等。

以下是Retry()模块的一些常用参数和方法:

- total: 重试次数的上限。默认为3次。

- connect: 连接超时的重试次数的上限。默认为无限次。

- read: 读取超时的重试次数的上限。默认为无限次。

- backoff_factor: 各次重试之间的延迟时间的增长系数。默认为0。

- allowed_methods: 允许进行重试的HTTP请求方法。默认为GET、HEAD、PUT、DELETE、OPTIONS、TRACE。

- status_forcelist: 在遇到这些HTTP响应状态码时进行重试。默认为500、502、503、504。

- retry_on_timeout: 是否在请求超时时进行重试。默认为False。

- raise_on_redirect: 是否在遇到重定向时抛出异常。默认为True。

以下是一个使用Retry()模块的例子:

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

# 创建一个重试对象,最多重试3次,每次重试之间有0.5秒的延迟时间
retry = Retry(total=3, backoff_factor=0.5, status_forcelist=[500, 502, 503, 504])

# 创建一个HTTP适配器,并将重试对象应用于该适配器
adapter = HTTPAdapter(max_retries=retry)

# 创建一个会话对象,并将适配器应用于该会话
session = requests.Session()
session.mount('http://', adapter)
session.mount('https://', adapter)

# 发送HTTP请求
response = session.get('http://www.example.com')

# 输出响应内容
print(response.text)

在上面的例子中,首先创建了一个Retry()对象,它最多重试3次,重试之间每次增加0.5秒的延迟时间,当遇到500、502、503、504这些HTTP响应状态码时进行重试。

然后,创建了一个HTTPAdapter适配器,并将重试对象应用于该适配器。接下来,创建了一个会话对象,并将适配器应用于该会话。

最后,通过会话对象发送了一个GET请求,请求的URL为"http://www.example.com"。收到响应后,输出响应内容。

这样的设置可以确保在请求失败时进行最多3次重试,每次重试之间有逐渐增加的延迟时间,以增加请求的成功率和稳定性。