在 Python 中设置请求的最大重试次数
本教程描述了为什么我们会收到错误消息,指出超出了最大重试次数,以及我们如何在 Python 中为请求设置 max_retries。 如果服务器上的负载导致此错误,它还会为我们提供提示。
Python中设置请求max_retries的错误,的原因和解决方案
在继续查看如何在 Python 中为请求设置 max_retries 之前,让我们先解决一些问题。
- 首先,如果您的 URL 不正确,就会发生此错误。 因此,您需要检查您请求的 URL 是否有效。
- 此错误也可能由于互联网连接而发生,因此请确保您没有遇到所有此类问题。
- 当服务器过载时,我们也会收到此错误。 当服务器繁忙时,您可能会遇到此类错误。
这就是增加请求 URL 的重试次数的现象来帮助我们的地方。 因此,让我们了解如何做到这一点。 但是,首先,看看下面的代码。
示例代码:
import requests
# increass retries number
retries = #enter the number of retires you want to increase
requests.adapters.DEFAULT_RETRIES = retries
这是您可以在 Python 中增加 URL 请求的重试次数的方法,但是如果由于服务器负载而出现此错误,您可以使用以下提示。
> python -m pip install requests
在 Python 中摆脱请求的 Set max_retries 的技巧
如果服务器上的负载导致此错误,您可以使用以下任何提示。
-
禁用 keep_alive
您可以禁用会话的 keep_alive 功能。 下面的一段代码解释了如何做到这一点。
request_session = requests.session() # disable keep_alive request_session.keep_alive = False request_session.get(your_url)
-
使用超时
当服务器过载、繁忙或远离该位置时,这可能成为您遇到相同错误的原因。 为避免这种情况,您可以增加响应时间。
您可以使用来自服务器的 POST 和 GET 请求来完成此操作。 例如,看看下面的代码。
import requests #the time in seconds in this example is increasing time by 5 req = requests.get(your_url, timeout=5) req = requests.post(your_url, timeout=5)
req = requests.get(your_url, timeout=(3,6))
-
设置 backoff_factor(延迟/睡眠)
backoff_factor 是请求用来初始设置网络连接的 urllib3 参数。
您还可以设置 backoff_factor 以增加每次尝试的尝试次数和休眠时间。
它将避免出现此错误。 有了这个,你就停止了这段代码并让它等待,直到它收到服务器的响应。
下图说明了 backoff_factor 如何在服务请求失败时延迟服务请求。
#you can set a backoff factor means delay/sleep time in each retry import requests from requests.adapters import HTTPAdapter from requests.packages.urllib3.util.retry import Retry #initailize the request session request_session = requests.Session() #initailizing retry object #you can increase the number of total retires and sleep time of each retry retries = Retry(total=3, backoff_factor=1) adapter = HTTPAdapter(max_retries=retry) request_session.mount('http://', adapter) request_session.get(your_url)
例如,在每次不成功的连接尝试之后,urllib3 将休眠 {backoff_factor} * (2 (总重试次数 - 1)) 秒。
例如,如果 backoff_factor 设置为 0.01,sleep() 将在两次重试之间休眠 0.0s、0.2s、0.4s……。 默认情况下退避是不活动的(设置为 0)。
如果返回的状态码是500、502、503、504,会额外要求重试。 要更好地控制重试,您可以修改重试。
相关文章
Pandas DataFrame DataFrame.shift() 函数
发布时间:2024/04/24 浏览次数:133 分类:Python
-
DataFrame.shift() 函数是将 DataFrame 的索引按指定的周期数进行移位。
Python pandas.pivot_table() 函数
发布时间:2024/04/24 浏览次数:82 分类:Python
-
Python Pandas pivot_table()函数通过对数据进行汇总,避免了数据的重复。
Pandas read_csv()函数
发布时间:2024/04/24 浏览次数:254 分类:Python
-
Pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 DataFrame 中。
Pandas 多列合并
发布时间:2024/04/24 浏览次数:628 分类:Python
-
本教程介绍了如何在 Pandas 中使用 DataFrame.merge()方法合并两个 DataFrames。
Pandas loc vs iloc
发布时间:2024/04/24 浏览次数:837 分类:Python
-
本教程介绍了如何使用 Python 中的 loc 和 iloc 从 Pandas DataFrame 中过滤数据。
在 Python 中将 Pandas 系列的日期时间转换为字符串
发布时间:2024/04/24 浏览次数:894 分类:Python
-
了解如何在 Python 中将 Pandas 系列日期时间转换为字符串