Max retries exceeded with url--问题解决方案


使用requests库请求url,会出现这个错误(

urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='cws-qa-internal.cyy928.com', port=80): Max retries exceeded with url: /signin (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x000001F99F58D688>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。'))

1. 错误出现的原因:

服务器负载过重,无法建立更多的链接,4种可能:

  1. http连接太多没有关闭导致的。
  2. 机器的内存不够了。
  3. 还有一种可能就是:由于请求频率过快,被目标网站封IP了
  4. 请求的 url 地址错误

2. 解决方案:

  1. 增加重试连接次数 requests.adapters.DEFAULT_RETRIES = 5

  2. 关闭多余的连接 requests使用了urllib3库,默认的http connection是keep-alive的,requests设置False关闭。 操作方法: s = requests.session() s.keep_alive = False

  3. 中间有很多尝试解决的步骤,这里不再赘述,只奉上最终的解决方案,在发起get或者post请求时,设置Connection属性为close,而非keep-alive,如:httpGet.setHeader("Connection","close");,这是由我们的业务场景决定的,爬虫任务对于一个URL只需要请求一次,我们在请求完成后理解关闭连接,客户端就不需要一直维持这个连接了。进行如此设置后,再查看文件句柄,发现没有了close_wait状态的网络连接,大功告成。

  4. 检查请求头中的host值是否配置对了,如果配置错了,也会出现连接不上的情况

  以上四种解决方法,试了第一和第二,其实不管用;然后后来修改了 3 和4,才解决了问题的 ,附带http请求头中的host字段的作用(https://blog.csdn.net/cxy1991xm/article/details/102997349 )

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM