zoukankan      html  css  js  c++  java
  • Python requests 多线程抓取 出现HTTPConnectionPool Max retires exceeded异常

    https://segmentfault.com/q/1010000000517234

    2018-07-24 14:14:46,891 - oracle - ERROR - data format error:HTTPConnectionPool(host='10.193.135.102', port=9082): 
    Max retries exceeded with url: /collection/agent (Caused by NewConnectionError
    ('<requests.packages.urllib3.connection.HTTPConnection object at 0x02672AD0>: Failed to establish a new connection: [Errno 10053] ',)),item:

    多方查阅后发现了解决问题的原因:http连接太多没有关闭导致的

    解决办法:

    1、增加重试连接次数

      requests.adapters.DEFAULT_RETRIES = 5

    2、关闭多余的连接

    requests使用了urllib3库,默认的http connection是keep-alive的,requests设置False关闭。

    操作方法

    s = requests.session()
    s.keep_alive = False

    方法二:

    是因为在每次数据传输前客户端要和服务器建立TCP连接,为节省传输消耗,默认为keep-alive,即连接一次,传输多次,然而在多次访问后不能结束并回到连接池中,导致不能产生新的连接
    headers中的Connection默认为keep-alive,
    将header中的Connection一项置为close

    headers = {
        'Connection': 'close',
    }
    r = requests.get(url, headers=headers)
  • 相关阅读:
    第11组 团队项目-需求分析报告
    第12组 Alpha冲刺(1/6)
    2019 SDN上机第2次作业
    2019 SDN上机第1次作业
    第12组 团队Git现场编程实战
    第12组 团队项目-需求分析报告
    团队项目-选题报告
    第一次团队展示
    第一次结对编程作业
    第一次个人编程作业
  • 原文地址:https://www.cnblogs.com/sdadx/p/9361028.html
Copyright © 2011-2022 走看看