python request大批量发送请求调用接口时,报错:[WinError 10048] 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。

这篇具有很好参考价值的文章主要介绍了python request大批量发送请求调用接口时,报错:[WinError 10048] 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

接到一个项目需求,其中需要调用到供应商的Http  API,因为有大量的测试资源,所以代码中会循环调用API。

然而在测试代码执行过程中,过程中偶尔报错:

python request大批量发送请求调用接口时,报错:[WinError 10048] 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。

 此时看到报错,怀疑是可能是同时并发的问题,

但实际上并未对该接口进行限制,所以应该不是这个的问题, 进一步查看其他的报错的信息

urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPSConnection object at 0x0C9C64F0>: Failed to establish a new connection: [WinError 10048] 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。

此错误原因指示是:一个通讯端口只能用一次

通过以下命令查看 TCP连接状态

ping host地址

netstat -ano |  findstr IP

python request大批量发送请求调用接口时,报错:[WinError 10048] 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。

发现大量请TCP连接处于TIME_WAIT状态。

从上面TCP连接来看, 本地IP和服务端IP、服务端 端口都是固定不变的,而本地的端口是变化的。本地端口使用范围是  49152 --  65535,总共16383个

从代码来看,因为是循环调用API,请求较多,导致大量请求处于TIME_WAIT状态,没有被释放,导致端口不够用。

那TIME_WAIT状态到底代表什么意思呢?

来看TCP三次握手四次挥手的过程

python request大批量发送请求调用接口时,报错:[WinError 10048] 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。

 python request大批量发送请求调用接口时,报错:[WinError 10048] 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。

 客户端在收到服务发送的FIN+ACK数据段后,向服务端发送一个ACK=1, seq=m+1, ack=+1数据段,之后就进入到TIME_WAIT状态时,此时TCP连接还没有完全释放,必须等待2MSL时间(一个MSL为2分钟),也就是4分钟之后才会进入到close状态, 以避免服务端没收到最后一个ACK报文。(Maximum Segment Lifetime英文的缩写,中文可以译为“报文最大生存时间”)

了解了以上原因,那总结下来原因是:

1、连接请求量过大

2、TIME_WAIT时间太长(4分钟),导致端口不能及时被释放

3、端口占用过多,导致本机端口数量不够

然而在结束执行程序(即结束全部的TCP连接)后, 再次进行代码执行时,发现请求次数还是有时没达10个就报错,可能是本机端口数量不够

所以最终解决方案:

1、减少TIME_WAIT时间, 修改TcpTimedWaitDelay

使用 regedit 命令访问 HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/ Services/TCPIP/Parameters 注册表子键并创建名为 TcpTimedWaitDelay 的新 REG_DWORD 值。 将此值设置为十进制 30,其为十六进制 0x0000001e。该值将等待时间设置为 30 秒。 停止并重新启动系统。 缺省值:0xF0,它将等待时间设置为 240 秒(4 分钟)。 建议值:最小值为 0x1E,它将等待时间设置为 30 秒。

2、增加本机端口数量,修改MaxUserPort

MaxUserPort是一台主机向外连接使用端口数量的限制,这个数配置的,可能默认值才5000

使用 regedit 命令访问 HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/TCPIP/Parameters 注册表子键并创建名为 MaxUserPort 的新 REG_DWORD 值。 重启系统。 该值的范围是从5000到65534,缺省值为5000,建议将该值设置为65534。

python request大批量发送请求调用接口时,报错:[WinError 10048] 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。

 

关于MaxUserPort参考: socket跟TCP/IP 的关系,单台服务器上的并发TCP连接数问题 - smile_lg - 博客园文章来源地址https://www.toymoban.com/news/detail-409508.html

到了这里,关于python request大批量发送请求调用接口时,报错:[WinError 10048] 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • elasticsearch删除大批量数据方法

    一般回用如下: 示例: 如果删除任务完成了,返回如下: 数据查询任务:

    2024年02月12日
    浏览(67)
  • 多线程处理大批量数据操作

     @Autowired private DataSourceTransactionManager dataSourceTransactionManager; @Autowired private TransactionDefinition transactionDefinition; @Autowired private StudentService studentService; /**  * 对用户而言,27s 任是一个较长的时间,我们尝试用多线程的方式来经行修改操作看能否加快处理速度  * 预计创建10个线程

    2024年02月09日
    浏览(46)
  • MySQL---使用索引优化、大批量插入数据优化

    1. 使用索引优化 索引是数据库优化最常用也是最重要的手段之一 , 通过索引通常可以帮助用户解决大多数的 MySQL 的性能优化问题: 1.1 避免索引失效应用-全值匹配 该情况下,索引生效,执行效率高。 1.2 避免索引失效应用-最左前缀法则 1.3 避免索引失效应用-其他匹配原则

    2024年02月07日
    浏览(53)
  • Jmeter(三十一):制造大批量的用户数据数据

    需求:因测试需要,要造100w用户数据,通过用户名、手机号、密码可新增用户,其中用户名和电话号码要求100w用户不能重复 要点: 1、通过Bean shell Sampler实现用户名和手机号的足够随机。 符合我们常用规则的手机号:第一位为1,第二位为3-9,后面的9位为0-9即可。 phone=${_

    2024年02月10日
    浏览(43)
  • cesium实现大批量POI点位聚合渲染优化方案

    cesium目前只提供了entityCluster这个聚合类,使打点聚合更方便快捷的实现,但是一般在真正做项目的时候,大家会经常碰到成千上万个甚至几十万个点位需要聚合打点,那这时候你如果还是用entity去实现的话,怕是要被用户按在地上疯狂摩擦,摩擦。。。😅 我们可以通过模拟

    2024年02月09日
    浏览(43)
  • 远程运维大批量IT设备?向日葵批量部署、分组授权与安全功能解析

    数字化转型的不断推进,给予了企业全方位的赋能,但任何发展都伴随着成本与代价,比如在数字化转型过程中企业内部办公与外部业务所需的不断增加的IT设备数量,就为日常的运维工作提出了更大的挑战。 针对企业面对海量IT设备时的运维难、效率低、容易出错等问题,

    2024年02月14日
    浏览(47)
  • 使用postman做接口测试传入大批量动态参数的方法

    postman是一个非常好用的接口测试工具,而且功能也很强大,今天只简单说一下使用postman如何对一个接口传入大批量参数进行测试的方法。 以我测试的平台为例,我们的平台是做在线教育平台的,我模拟的场景是老师有一门课叫ABC,现在需要有1000个学生加入ABC这门课。我们不

    2024年01月23日
    浏览(63)
  • redis 无占用 两种方式 清除大批量数据 lua脚本

    redis存储了很多无用的key,占用了大量内存,需要清除 第一种 (颗粒度较大) lua脚本,删除某些规则的key,输入删除的key,返回删除的符合规则的key的数量 弊端:颗粒度比较大,发送一个lua脚本去执行,会占用较多时间,堵塞其他redis命令 java代码 这样直接删除,因为规则有很

    2024年04月28日
    浏览(37)
  • 记一次 OSS 大批量文件下载的实现 → bat脚本不好玩!

    一天夜里,侄女跟我哥聊天 侄女一脸期待的看着我哥:爸爸,你说妈妈和奶奶谁漂亮啊? 我哥不慌不忙的拿起一粒瓜子,轻声说道:为啥没有你啊? 侄女笑容渐起,似乎得到了她想要的回答,仍继续问道:那妈妈和奶奶还有我,谁漂亮? 我哥瞄了一眼侄女,又拿起一粒瓜子

    2024年02月05日
    浏览(43)
  • ZooKeeper+Kafka+ELK+Filebeat集群搭建实现大批量日志收集和展示

    大致流程:将nginx 服务器(web-filebeat)的日志通过filebeat收集之后,存储到缓存服务器kafka,之后logstash到kafka服务器上取出相应日志,经过处理后写入到elasticsearch服务器并在kibana上展示。 一、集群环境准备 二、搭建zookeeper集群 前提条件:三台机器分别修改时区、关闭防火墙

    2024年02月04日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包