目录

  • 问题解决方案
  • 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 解决方案相关推荐

  1. 【爬虫 | Python】解决‘Requests Max Retries Exceeded With Url‘报错的问题

    [爬虫 | Python]解决'Requests Max Retries Exceeded With Url in Python'报错的问题 背景 解决方案 一.普遍方案 细致方案 一.问题重述 1. ...

  2. HTTPConnectionPool Max retries exceeded with url

    ConnectionError at /data/booking/hanyue/xiaohongshu HTTPConnectionPool(http://): Max retries exceede ...

  3. Max retries exceeded with URL in requests

    爬虫的时候遇到的一个错误 Max retries exceeded with URL in requests requests.exceptions.ConnectionError: HTTPSCon ...

  4. python3 错误 Max retries exceeded with url 解决方法

    在爬取时出现这种错误, ConnectionError: HTTPConnectionPool(host='xxx.xx.xxx.xxx', port=xxxx): Max retries excee ...

  5. Max retries exceeded with URL报错小记

    from hyp mistake: 循环post请求第二遍报错 Max retries exceeded with URL for i in fac:url=******payload = ***** ...

  6. HTTPConnectionPool(host:XX)Max retries exceeded with url 解决方法

    2019独角兽企业重金招聘Python工程师标准>>> HTTPConnectionPool(host:XX)Max retries exceeded with url 解决方法 在 ...

  7. http请求报错SSLError: HTTPSConnectionPool:Max retries exceeded with url

    1.问题描述: 迭代请求http web服务,中途遇到异常报错: requests.exceptions.SSLError: HTTPSConnectionPool(host='xxx.com', p ...

  8. 解决Max retries exceeded with url的问题

    解决Max retries exceeded with url的问题 requests.exceptions.ConnectionError: HTTPSConnectionPool(host='ww ...

  9. python HTTPConnectionPool(host:XX)Max retries exceeded with url

    python 出现HTTPConnectionPool(host:XX)Max retries exceeded with url问题 在每次数据传输前客户端要和服务器建立TCP连接,为节省传输消耗, ...

最新文章

  1. javascript与java正则表达式写法的区别
  2. Git创建ssh密匙时报错Too many arguments解决方法
  3. 使用JSTL报错:items does not support runtime expre...
  4. c语言中void msg,如何连接到IRC服务器/解析C语言(提供代码)的IRC MSG/PING-PONG处理...
  5. AOP切入同类调用方法不起作用,AopContext.currentProxy()帮你解决这个坑
  6. 南科大计算机科学与技术专业如何,广州大学、深圳大学、汕头大学、南方科技大学,如何排名?...
  7. java的类的设计_Java 类设计技巧
  8. 解析HetuEngine实现On Yarn原理
  9. 正太分布几个简单证明
  10. 【毕设狗】【单片机毕业设计】基于单片机的智能密码锁的设计
  11. 《遥感原理与应用》孙家抦版知识点总结(含简答题)——第二章
  12. QT资源库中图片的调用
  13. android内窥镜安装软件,DEPSTECH内窥镜app
  14. InoReader——网页无法打开
  15. **********模拟新浪微博*********
  16. 2021-06-19:交错字符串。 有三个字符串s1,s2,s3。判断s3是否由s1和s2交错组成的。比如s1=“abc“,s2=“123“,s3=“12ab3c“,应该返回true,因为s3去掉12
  17. 记录一直以来看过的电视剧、电影及书籍
  18. duilib制作窗体动画效果
  19. 核酸多样性(pi)计算公式
  20. 翻译:SQL Server 2005中的覆盖索引

热门文章

  1. CSDN Chrome插件来啦,听说可以提升开发者效率,我们先来研究一波
  2. 谷歌浏览器如何将繁体字设置成中文?
  3. 一个页面从输入URL到加载显示完成,发生了什么?
  4. centos-7.2 node.js免编译安装
  5. 写出完美CSS代码的5个重要方面
  6. html笔记(四)弹性盒+响应式
  7. Linux系统下,MySQL以及禅道的安装/卸载
  8. HDU 2841 Visible Trees(容斥)题解
  9. 2018年各大互联网前端面试题五(今日头条)
  10. docker集群管理