关于py用requests包大量发起链接时报错:[WinError 10048] 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。

关于py用requests包大量发起链接(大约数万,也差不多就是端口号数量)时报错

javaurllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x000001EF015EE920>: Failed to establish a new connection: [WinError 10048] 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。
我的是由于在循环里大量的调用了request.get(url,param),导致每一个请求都创建了一个套接字
cmd用netstat -nao可以看到大量timeout状态的端口使用在这里插入图片描述

查询得知,可以使用requests包的session来发起请求(如果用socket通信的话好像可以指定端口复用),这样使用的就是同一个会话,不会创建很多新的链接
但是仍然不生效,最后发现原因是我的代码结果类似于

for(i<1000{
	//xxxxxx
	for(j<20){
		requests.session().get()
	}
	//xxxxx
}

没有后续测试原理,但是将这个结构改为:

session=requests.session()
for(i<1000{
	//xxxxxx
	for(j<20){
		session.get()
	}
	//xxxxx
}

即可解决,也可以查看到没有占用大量新的端口

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值