Python requests 多线程抓取 出现HTTPConnectionPool Max retires exceeded异常

https://segmentfault.com/q/1010000000517234

-- ::, - oracle - ERROR - data format error:HTTPConnectionPool(host='10.193.135.102', port=): 
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)
上一篇:Oracle12c Data Guard搭建手册


下一篇:win10系统安装labelImg