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 ...
随机推荐
- [sklearn] 决策树、随机森林、隐马尔可夫模型
决策树 决策树(Decision Tree)是一种用于处理分类和回归问题的无监督学习算法.如下图所示为某女青年在某相亲网站的相亲决策图.这幅图描述的都是一个非常典型的决策树模型. 通过对其相亲决策的分 ...
- 云间玉兔,自出机抒,从零开始制作Web插件网页特效小兔子组件(小挂件widget),基于原生CSS/NPM
著意登楼瞻玉兔,何人张幕遮银阙?又到了一年一度的网页小挂件环节,以往我们都是集成别人开源的组件,但所谓熟读唐诗三百首,不会做诗也会吟,熟读了别人的东西,做几首打油诗也是可以的,但若不能自出机抒,却也成 ...
- 无旋树堆(FHQ-Treap)学习笔记
简介 无旋树堆(一般统称 \(\text{FHQ-Treap}\)),是一种平衡树.可以用很少的代码达到很优秀的复杂度. 前置知识: 二叉搜索树 \(\text{BST}\) \(\text{Trea ...
- yarn使用 以及和npm对比
yarn是facebook发布的一款取代npm的包管理工具. yarn的特点: 速度超快. Yarn 缓存了每个下载过的包,所以再次使用时无需重复下载. 同时利用并行下载以最大化资源利用率,因此安装速 ...
- Redis 正则扫描key并删除
扫描key /** * @param key * @return * @Description: 通过Scan的方式迭代key */ public Set<String> scanKeys ...
- 读Java8函数式编程笔记05_数据并行化
1. 并发 1.1. 两个任务共享时间段 1.2. 一个程序要运行两个任务,并且只有一个CPU给它们分配了不同的时间片,那么这就是并发,而不是并行 2. 并行 2.1. 两个任务在同一时间发生 2.2 ...
- 定时调度插件------Sundial
1 插件概述 开源链接:https://gitee.com/dotnetchina/Sundial 作者:百小僧 版本:2.5.6 2 使用方式 2.1 安装 nuget :搜索Sundial或使用命 ...
- 【随笔记】SiliconLabs Android aar 库使用
一.导入库文件 1. 拷贝以下两个文件到工程的 libs 目录下 ble_mesh-android_api_high-release.aar ble_mesh-android_api_low-rele ...
- 【学习笔记】开源库之 - sigslot (在解决浅拷贝问题的基础上增加信号拦截功能)
前言说明 在文中<[学习笔记]开源库之 - sigslot (提供该库存在对象拷贝崩溃问题的解决方案)>已经介绍过 sigslot ,此文主要应用在实际的工作项目中时,发现会有拦截信号的需 ...
- Hive删除分区名称中含有特殊字符
先说方案:通过show partitions和hdfs url看到的都不是真正的分区名称,都是经过URI重新编码的,访问这些分区应该使用分区名称的原始字符串. 场景描述 当我们在SQL语句中使用变量时 ...