Python报错:ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。

本文介绍了在使用Python多线程建立TCP连接时遇到的ConnectionRefusedError错误(WinError10061),并详细分析了错误原因,主要为服务器处理速度无法跟上客户端请求速度。提供了通过在启动线程前增加延迟时间的解决方案,有效避免了因快速并发请求导致的连接失败。
摘要由CSDN通过智能技术生成

Python报错:ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。

环境:windows

语言:python

故障:ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接

详细背景:python,threading,多线程里建立tcp链接。虚拟tcp服务器工具:“TCP-UDP服务管理V3.02”

前言:2020年4月23日23:16:10 最近在学习python 多线程。线程里面涉及到tcp。100个线程,没问题。1000个,就报错了10061了。先百度了一边。都说“权限不够”,让去将局域网设置修改为“自动配置-自动检测设置”。作为老手,顺便就百度了自动和手动有啥区别。原来就是自动获取ip和手动设置ip的区别。作为老油条,我当然选择“手动”。

所以问题不在这里。加上100个线程创建tcp可以。分析到可能是线程创建过快,创建完毕即start(),然后就开始connect(),tcp服务器虚拟工具处理不过来,前一个线程还没connect处理好,后一个线程就开始connect过来了。于是就报错了。大部分原因,应该是这个工具“TCP-UDP服务管理V3.02”处理要建立链接还要进行一个界面控件的可视化列表显示,造成处理延时了。

解决方法:


       thread = threading.Thread(target = single_thread_job, name = ("Thread_num = %3d :"% i), args= (i, ))  #threading的三个参数。函数名,线程名,元祖参数
       time.sleep(0.1)  #创建之后延迟100ms执行start() 延迟即是本问题解决方案
       thread.start()   #启动线程
       i = i + 1        

实测可行。

原因分析:服务器处理速度跟不上客户端的链接和请求速度。需要优化服务端的瓶颈(如资源、连接池数、限制rps,设置qps阈值,其余不处理等)或者,也可以调低客户端的请求频次(如示例中,sleep(0.1))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值