Max retries exceeded with url 解决方案
目录
- 问题解决方案
- keep alive 与close使用场景
问题解决方案
在上一篇问题解决中:python OSError: [Errno 24] Too many open files | HTTPConnectionPool(host=‘‘, port=80): Max retries e
有提到修改本地进程最大文件数来避免Max retries exceeded with url 报错,也谈到如果请求api端有请求数量限制,仍然是拉取不到结果的。这时我们就要限制我们请求的频率了。
下面有三个常见的方法:
1、增加重试连接次数:
requests.DEFAULT_RETRIES = 5
2、关闭多余的链接:
默认的http connection是keep-alive的,在post请求中,header中有这样一个字段:Connection,我们将其置为’close’
monitor_header = {"Content-type":"application/json","Accept":"*/*","Connection":"close","X-API-Version":"v1","projectname": "wemeet","appname": "media_proxy","token": "2e962d4104a2c28477ab7f38883b79bb"
}
http是一个无状态的面向连接的协议。
http无状态:无状态协议是指http协议本身对于事务处理没有记忆功能,服务器不知道浏览器的状态。通俗的即使你登录了,去访问同一个网站的不同网页,服务器都不会知道你是谁,如果需要记录登录用户的信息,用户操作,用户行为等数据需要使用cookie或session来存储。
keep-alive:从HTTP/1.1起,浏览器默认都开启了Keep-Alive,保持连接特性,客户端和服务器都能选择随时关闭连接,则请求头中为connection:close。简单地说,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的TCP连接。但是Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。
误解:无状态不代表HTTP不能保持TCP连接,更不能代表HTTP使用的是UDP协议(无连接)。即使http在无状态下,只要客户端和服务器的头部信息connection:keep-alive,则在有效期内他们使用同一条TCP连接。
3、请求时增加缓冲延时
由于我这里是多线程进行post请求,总共有2744个线程。这里进行分批次的发请求,发完一次sleep一段时间:
def get_machine_quality(mapping):threads = []list_machine_obj = []now_time = time.time()for value in mapping.values():for v in value:machine_obj = quality_data(v, 0, now_time)list_machine_obj.append(machine_obj)index = 0for value in mapping.values():for v in value:# 创建新线程thread_tmp = my_thread(v, threadfunc_get_machine_quality, list_machine_obj[index])# 添加线程到线程列表threads.append(thread_tmp)index += 1# 开启新线程length = len(threads)part = 4for i in range(0,part):start = int(i / part * length)end = int((i + 1) / part * length)for i in range(start, end):threads[i].start()for i in range(start, end):threads[i].join()time.sleep(40)print(str(start) + "to" + str(end))logging.critical(str(start) + "to" + str(end))# print ("退出主线程")return list_machine_obj
keep alive 与close使用场景
1、当你的Server内存充足时,KeepAlive =On还是Off对系统性能影响不大。
2、当你的Server上静态网页(Html、图片、Css、Js)居多时,建议打开KeepAlive 。
3、当你的Server多为动态请求(因为连接数据库,对文件系统访问较多),KeepAlive 关掉,会节省一定的内存,节省的内存正好可以作为文件系统的Cache(vmstat命令中cache一列),降低I/O压力。
PS:当KeepAlive =On时,KeepAliveTimeOut的设置其实也是一个问题,设置的过短,会导致Apache 频繁建立连接,给Cpu造成压力,设置的过长,系统中就会堆积无用的Http连接,消耗掉大量内存,具体设置多少,可以进行不断的调节,因你的网站浏览和服务器配置 而异。
参考:
解决Max retries exceeded with url的问题
转:Connection: close和Connection: keep-alive有什么区别?
Max retries exceeded with url 解决方案相关推荐
- 【爬虫 | Python】解决‘Requests Max Retries Exceeded With Url‘报错的问题
[爬虫 | Python]解决'Requests Max Retries Exceeded With Url in Python'报错的问题 背景 解决方案 一.普遍方案 细致方案 一.问题重述 1. ...
- HTTPConnectionPool Max retries exceeded with url
ConnectionError at /data/booking/hanyue/xiaohongshu HTTPConnectionPool(http://): Max retries exceede ...
- Max retries exceeded with URL in requests
爬虫的时候遇到的一个错误 Max retries exceeded with URL in requests requests.exceptions.ConnectionError: HTTPSCon ...
- python3 错误 Max retries exceeded with url 解决方法
在爬取时出现这种错误, ConnectionError: HTTPConnectionPool(host='xxx.xx.xxx.xxx', port=xxxx): Max retries excee ...
- Max retries exceeded with URL报错小记
from hyp mistake: 循环post请求第二遍报错 Max retries exceeded with URL for i in fac:url=******payload = ***** ...
- HTTPConnectionPool(host:XX)Max retries exceeded with url 解决方法
2019独角兽企业重金招聘Python工程师标准>>> HTTPConnectionPool(host:XX)Max retries exceeded with url 解决方法 在 ...
- http请求报错SSLError: HTTPSConnectionPool:Max retries exceeded with url
1.问题描述: 迭代请求http web服务,中途遇到异常报错: requests.exceptions.SSLError: HTTPSConnectionPool(host='xxx.com', p ...
- 解决Max retries exceeded with url的问题
解决Max retries exceeded with url的问题 requests.exceptions.ConnectionError: HTTPSConnectionPool(host='ww ...
- python HTTPConnectionPool(host:XX)Max retries exceeded with url
python 出现HTTPConnectionPool(host:XX)Max retries exceeded with url问题 在每次数据传输前客户端要和服务器建立TCP连接,为节省传输消耗, ...
最新文章
- javascript与java正则表达式写法的区别
- Git创建ssh密匙时报错Too many arguments解决方法
- 使用JSTL报错:items does not support runtime expre...
- c语言中void msg,如何连接到IRC服务器/解析C语言(提供代码)的IRC MSG/PING-PONG处理...
- AOP切入同类调用方法不起作用,AopContext.currentProxy()帮你解决这个坑
- 南科大计算机科学与技术专业如何,广州大学、深圳大学、汕头大学、南方科技大学,如何排名?...
- java的类的设计_Java 类设计技巧
- 解析HetuEngine实现On Yarn原理
- 正太分布几个简单证明
- 【毕设狗】【单片机毕业设计】基于单片机的智能密码锁的设计
- 《遥感原理与应用》孙家抦版知识点总结(含简答题)——第二章
- QT资源库中图片的调用
- android内窥镜安装软件,DEPSTECH内窥镜app
- InoReader——网页无法打开
- **********模拟新浪微博*********
- 2021-06-19:交错字符串。 有三个字符串s1,s2,s3。判断s3是否由s1和s2交错组成的。比如s1=“abc“,s2=“123“,s3=“12ab3c“,应该返回true,因为s3去掉12
- 记录一直以来看过的电视剧、电影及书籍
- duilib制作窗体动画效果
- 核酸多样性(pi)计算公式
- 翻译:SQL Server 2005中的覆盖索引