如何在 Python 中设置请求的最大重试次数

news/2024/12/19 5:01:52/

文章目录

    • Python中设置请求max_retries的错误,的原因和解决方案
      • 在 Python 中摆脱请求的 Set max_retries 的技巧


本篇文章介绍了为什么我们会收到错误消息,指出超出了最大重试次数,以及我们如何在 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 是库用来确定重试之间的休眠间隔的基值。

例如,在每次不成功的连接尝试之后,urllib3 将休眠 {backoff_factor} * (2 (总重试次数 - 1)) 秒。

例如,如果 backoff_factor 设置为 0.01,sleep() 将在两次重试之间休眠 0.0s、0.2s、0.4s……。 默认情况下退避是不活动的(设置为 0)。

如果返回的状态码是500、502、503、504,会额外要求重试。 要更好地控制重试,您可以修改重试。


http://www.ppmy.cn/news/209240.html

相关文章

什么镜头最适合拍风景_风景用什么镜头好

展开全部 外出旅游的复时候的携制带镜头需要考虑的因素还bai是比较多du的,一般来说要考虑zhi到拍摄题材dao、背负重量等综合因素来选择,下面我就来和您说明一下我如果自己外出旅游的话,会选择怎样的镜头拍摄风光~ 16-35mm F4/2.8 超广角变焦镜…

佳能85mmF#1.4L IS USM镜头构造

本镜头感觉可以看到双高斯镜头的影子,焦距和大光圈让镜头保持良好的虚化效果。主要用于婚纱摄影,值得一提的是为了控制间隔,机械件以0.1mm的间隔进行缩减,从中可以看到结构件设计的影子;为了减小镜头的重量&#xff0c…

哪些镜头焦外表现最好

http://www.zhihu.com/question/26751916 著作权归作者所有。 商业转载请联系作者获得授权,非商业转载请注明出处。 作者:Thomas Schuss 链接:http://www.zhihu.com/question/26751916/answer/38691416 来源:知乎 先说结论&#…

相机选型与远心镜头选型

相机选型: 1、确定精度需求: 例如我需要的精度为0.1mm,那么在选择相机时分辨率时一般要高于这个精度,那么我这里按照1/5 计算,也就是0.02mm; 再根据视野需求来计算相机分辨率:例如我的视野需求…

18135usm_更快更安静佳能18-135mmUSM镜头解析

在135mm画幅相机上,24-70mm或是24-105mm等这些标准变焦镜头由于具备能广能长的焦段而受到很多用户的喜爱,而在APS-C画幅相机上自然也是如此,诸如18-55mm、18-135mm这些镜头往往更容易满足人们“一镜走天下”的需求。说起18-135mm焦段的镜头&a…

知识付费海哥:不理解这一点,你永远无法“知识变现”

哈喽,大家好,我是海哥,知识付费变现创业教练,教育公司培训总监,从事知识付费变现咨询10年,已助力3000人实现知识付费变现。 知识变现,是当前很热门的一个词。 由罗振宇率领的得到系老师&#…

18135usm_佳能PZ-E1+EF-S 18-135mm f/3.5-5.6 IS USM镜头 小型工作室的利器

EF-S 18-135mm f/3.5-5.6 IS USM 在大神眼里据对是属于狗头系列的 哈哈哈 但是这货如果搭配佳能的 PZ-E1 在配合佳能80D 那绝对是小型视频工作室的首选 !!! mxcpTB2rqUOg80kpuFjSsppXXcGTXXa_!!104284319.jpg (156.5 KB, 下载次数: 1) 2017-…

MySQL卸载-Linux版

MySQL卸载-Linux版 停止MySQL服务 systemctl stop mysqld查询MySQL的安装文件 rpm -qa | grep -i mysql卸载上述查询出来的所有的MySQL安装包 rpm -e mysql-community-client-plugins-8.0.26-1.el7.x86_64 --nodepsrpm -e mysql-community-server-8.0.26-1.el7.x86_64 --no…