python requests库从接口get数据报错Max retries exceeded with url解决方式记录
问题:
session = HTMLSession()
r: requests_html.HTMLResponse
r = session.get(url=req["url"], params=req["params"], cookies=req["cookies"]
在跑的过程偶然出现一次Max retries exceeded with url报错,虽然只有一次,为了稳妥起见,我还是去查了一下可能的原因和解决办法
报错信息为
requests.exceptions.ConnectionError: HTTPConnectionPool(host='..com', port=80): Max retries exceeded with url: /diagno/version/data?=23&=23&=10&=10&=111&=273 (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x09C44280>: Failed to establish a new connection: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。'))
解决方案:
经查找,可能的原因有2个
- http保持长连接导致短时间内大量连接存在,最终服务器拒绝访问;
- 访问次数频繁,被禁止访问
原因2需要加代理,我就先不加,接下来只对原因1处理
from requests_html import HTMLSession
def api_get_html(self, req: dict):
session = HTMLSession()
for i in range(3):
try:
r: requests_html.HTMLResponse
r = session.get(url=req["url"], params=req["params"], cookies=req["cookies"],headers={'Connection': 'close',})
break
except ConnectionError as e:
logging.warning(f"{e}==>req:{str(req)}")
time.sleep(2)
else:
raise e
总的来说,就是访问时关闭TCP长连接"headers={'Connection': 'close',}",再用try……excep捕捉错误,捕捉到之后就等待2s后重连,总共尝试重连3次,最终如果还是不行就把错误报出来跳出程序
----更新------
最近同事反馈又报了这个错误,查了一下不是这个方法报的错,是别的访问接口的方法。目前来说这种解决方式应该还是可行的。
写了个装饰器,把所有访问接口方法的封装起来。后续再看看会不会报错。
python requests库从接口get数据报错Max retries exceeded with url解决方式记录的更多相关文章
- 使用python requests库写接口自动化测试--记录学习过程中遇到的坑(1)
一直听说python requests库对于接口自动化测试特别合适,但由于自身代码基础薄弱,一直没有实践: 这次赶上公司项目需要,同事小伙伴们一起学习写接口自动化脚本,听起来特别给力,赶紧实践一把: ...
- python requests发起请求,报“Max retries exceeded with url”
需要高频率重复调用一个接口,偶尔会出现"Max retries exceeded with url" 在使用requests多次访问同一个ip时,尤其是在高频率访问下,http连接 ...
- windows环境pip安装时一直报错Could not fetch URL https://pypi.org/simple/xrld/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url:
最近项目不忙了~~有开始专研的python大业,上来想用pip安装一个第三方的库,就一直报错: Could not fetch URL https://pypi.org/simple/xrld/: T ...
- centos7中python3.6报错ModuleNotFoundError: No module named '_ssl' 或者 Max retries exceeded with url: / (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.",))
如果在运行爬虫时报此错:requests.exceptions.SSLError: HTTPSConnectionPool(host='www.baidu.com', port=443): Max r ...
- 关于python3.6上传文件时报错:HTTPSConnectionPool(host='***.org', port=443): Max retries exceeded with url: /post (Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAIL解决办法
第一个报错: 最近在练习post请求中上传文件时遇到了一个奇葩事情,两台电脑上写了一模一样的代码,一个运行正常,另一个一片红. 最后了解了一下原因以及解决办法.先记录下关键代码: files = {& ...
- requests.exceptions.SSLError……Max retries exceeded with url错误求助!!!
import requests head = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Appl ...
- python+requests库,接口自动化
1.requests库的使用 requests是python的一个HTTP客户端库,跟urllib,urllib2类似,那为什么要用requests而不用urllib2呢?官方文档中是这样说明的: “ ...
- Python+requests库 POST接口图片上传
捕获到POST接口的请求参数,如下: 包括data.file两个部分,上传代码如下: 比较简单,直接发送files参数即可 heads中 content-type 折腾了1个小时,呵呵
- python Max retries exceeded with URL in requests
使用requests进行重试 import requests from requests.adapters import HTTPAdapter from requests.packages.urll ...
- python requests库学习笔记(上)
尊重博客园原创精神,请勿转载! requests库官方使用手册地址:http://www.python-requests.org/en/master/:中文使用手册地址:http://cn.pytho ...
随机推荐
- [OpenCV实战]41 嵌入式计算机视觉设备选择
文章目录 1 简介 1.1 深度学习与传统计算机视觉 1.2 性能考量 1.3 社区支持 2 结论 3 参考 在计算机视觉领域中,不同的场景不同的应用程序需要不同的解决方案.在本文中,我们将快速回顾可 ...
- 道长的算法笔记:Trie字典树
Trie模板 Trie 是一种用于实现字典序快速检索的多叉树结构,Trie 每个节点都有若干的字符指针,若在扫扫描字符串时扫到字符 \(c\),则沿着当前节点 \(c\) 字符指针走向该指针指向的节点 ...
- 【前端调试】- 借助Performance分析并优化性能
欢迎阅读本系列其他文章 [前端调试]- 更好的调试方式 VSCode Debugger [前端调试]- 断点调试的正确打开方式 介绍 首先简单过一下Performance的使用,打开网页点击控制台Pe ...
- gRPC入门与实操(.NET篇)
为什么选择 gRPC 历史 长久以来,我们在前后端交互时使用WebApi + JSON方式,后端服务之间调用同样如此(或者更久远之前的WCF + XML方式).WebApi + JSON 是优选的,很 ...
- 普冉PY32系列(二) Ubuntu GCC Toolchain和VSCode开发环境
目录 普冉PY32系列(一) PY32F0系列32位Cortex M0+ MCU简介 普冉PY32系列(二) Ubuntu GCC Toolchain和VSCode开发环境 以下介绍PY32F0系列在 ...
- mysql中的列类型
创建数据表的时候,指定的列可以存储的数据类型: CREATE TABLE book ( bid 列类型); ① 数值类型--可以不加引号 TINYINT 微整型,占一个字节 范围-128~127 ...
- 如何解决github下载很慢的问题?(已经解决)
目的是为了解决GitHub致命的下载速度慢的问题 方法 通过码云来导入github,通过码云下载 1.在github上面找到自己想要的项目 这一步略过 2.复制github项目上面的网页链接 3.打开 ...
- 视图,触发器,存储过程,流程控制等MySQL小知识点
视图,触发器,存储过程,流程控制等MySQL小知识点 一.SQL注入问题 登录: import pymysql conn = pymysql.connect( host='127.0.0.1', po ...
- uboot之顶层Makefile
uboot版本信息 VERSION = 2006 主版本号 PATCHLEVEL = 03 补丁版本号 SUBLEVEL = 次此版本号 EXTRAVERSION = 附加版本 NAME ...
- Istio 升级后踩的坑
背景 前段时间我们将 istio 版本升级到 1.12 后导致现有的应用监控有部分数据丢失(页面上显示不出来). 一个是应用基础信息丢失. 再一个是应用 JVM 数据丢失. 接口维度的监控数据丢失. ...