requests客户端 Max retries exceeded with url (Caused by NewConnectionError(urllib3.connection...)

我在用requests访问我自己写的tornado时,由于数据量太大,速度过快  跑着跑着就出现了以下错误:

HTTPConnectionPool(host='localhost', port=6690): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x0000009717ECA6D8>: Failed to establish a new connection: [WinError 10048] 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。',)) +++

这是我写的requests的访问自己写的tornado客户端的代码:

res = requests.post('http://10.67.78.44:6789', json.dumps(data))

经过别人指点这是由于:能创建socket套接字句柄的数量是有限的,无论是win还是Linux,错误信息是用光了socket, 所以无法再建立tcp链接, 所以 要么sleep()停一下; 要么就让它不要一直保持着连接,访问完,完成一次传输就断掉  

 

这种情况有两种解决办法:

方法一:添加一个请求头,请求头内字段为:  

headers = {'Connection':'close'}

然后 请求代码改为:

res = requests.post('http://10.67.78.44:6789', json.dumps(data), headers=headers)

就可以了

方法二:

s = requests.session()

s.keep_alive = False

 

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值