Unexpected EOF 远程主机强迫关闭了一个现有的连接 如何处理

由于数据量的增大,调用接口的次数会增加。

当连续向目标网站发送多次request后,目标网站可能会认为是,恶意攻击。

于是会抛出requests异常。

测试代码:

for i in range(200):  # 连续请求200次
    requests.post(p['url'], headers=p['headers'], json=p['body'], verify=False)

在python3.6中,异常为

requests.exceptions.SSLError: HTTPSConnectionPool(host='', port=443): Max retries exceeded with url:
(Caused by SSLError(SSLError("bad handshake: SysCallError(-1, 'Unexpected EOF')",),))

在python3.7中,异常为

requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(10054, '远程主机强迫关闭了一个现有的连接。', None, 10054, None))

尝试百度了不少方法,如time.sleep(1),response.close(),socket.setdefaulttimeout(20)。

要么无效果,要么经不起多次验证。

既然是异常,那么就try呗。

把异常捕获,重新请求一次。

在等待异常过程中,变相的time.sleep了。

按照这个思路,写代码,验证,目前来看还是相对靠谱的。

while True:  # 循环
    try:
        r = eval(expression)
    except (requests.exceptions.SSLError, requests.exceptions.ConnectionError) as e:
        if 'bad handshake' in str(e) or '10054' in str(e):  # 上述2种异常
            continue  # 继续发请求
        else:
            raise Exception(e)  # 其他异常,抛出来
    break  # 无异常就跳出循环
return r  # 返回响应结果

版权申明:本文为博主原创文章,转载请保留原文链接及作者。

原文地址:https://www.cnblogs.com/df888/p/11743072.html

时间: 2024-11-07 13:02:55

Unexpected EOF 远程主机强迫关闭了一个现有的连接 如何处理的相关文章

webservice客户端调用服务端异常 —— 远程主机强迫关闭了一个现有的连接

最近遇到一个比较棘手的问题: 问题是这样的,搭建了一个webservice的服务平台,让后提供给多个接口调用,有两家接口调用了同样的一个方法,但是第一家的接口从来没有出现过问题,而另一家就奇怪了,最近总是出现 socket通信中断的情况,客户端报错如下: 调用WebService时找不到方法:doDownloadRecipeInfo.原因:System.Reflection.TargetInvocationException: Exception has been thrown by the t

解决WCF大数据量传输 ,System.Net.Sockets.SocketException: 远程主机强迫关闭了一个现有的连接

开发中所用的数据需要通过WCF进行数据传输,结果就遇到了WCF大量传输问题 也就是提示System.Net.Sockets.SocketException: 远程主机强迫关闭了一个现有的连接 网上解决方案都是千篇一律互相转发的,并且没有明确的解决方案或者按照,各个博客中的解决方案都没能解决这个问题. 为此我整整浪费了一天时间用来解决这个问题,而且用了最笨的办法一点点的尝试网上所查到的方案.对于精研WCF来说的这可能是一个小问题,但是对于仅仅了解wcf,一知半解的会很困惑.将解决方案贴出来希望能帮

Unable to open sync connection!远程主机强迫关闭了一个现有的连接。

最近开发,兄弟们问我这个问题,写出来解决方法和大家分享一下. 当控制台出现: Failed to install ***.apk on device '019417a3': Unable to open sync connection! java.io.IOException: Unable to open sync connection! Launch canceled! 或者 Uploading ****.apk onto device '1000b1eda2c2' Failed to in

eclipse连接远程Hadoop报错,Caused by: java.io.IOException: 远程主机强迫关闭了一个现有的连接。

eclipse连接远程Hadoop报错,Caused by: java.io.IOException: 远程主机强迫关闭了一个现有的连接.全部报错信息如下: Exception in thread "main" java.io.IOException: Call to hadoopmaster/192.168.1.180:9000 failed on local exception: java.io.IOException: 远程主机强迫关闭了一个现有的连接. at org.apach

Adb connection Error:远程主机强迫关闭了一个现有的连接 解决方法

用真机调试程序的时候,eclipse 的 Console 总是出现如下的错误"Adb connection Error:远程主机强迫关闭了一个现有的连接".     问题出现的原因:这是 DDMS 调用 adb 引发的.经过一番搜索,发现这是 Windows 环境下,adb 的一个限制,也可以说是 bug.当手机上同时运行的进程数大于 64 时, 就会引发 adb 奔溃.更深层次的原因,就是 Windows API 的 WaitForMultipleObjects 所支持的最大句柄数是

android:Adb connection Error:远程主机强迫关闭了一个现有的连接

用真机调试程序的时候,eclipse的console总是出现如下的错误"Adb connection Error:远程主机强迫关闭了一个现有的连接" 问题出现的原因:这是ddms调用adb引发的. 经过一番搜索, 发现这是windows环境下, adb的一个限制, 也可以说是bug. 当手机上同时运行的进程数大于64时, 就会引发adb奔溃. 更深层次的原因, 就是windows API的WaitForMultipleObjects所支持的最大句柄数是MAXIMUM_WAIT_OBJE

HAProxy出现"远程主机强迫关闭了一个现有的连接 " 的错误及解决

使用haproxy作为sql server 的负载均衡器. 使用了文档中的示例配置项: timeout client 50s        timeout server 50s 采用这个配置项,有时会出现“远程主机强迫关闭了一个现有的连接”的错误. 出现这个错误的原因是:一旦sql client超过50s没有给haproxy发送数据,则haproxy会关闭这个连接,此时sql client中的以为连接还是通的,此时发送数据就会出现异常. 在查看了HAProxy的官方文档,以及mysql和sql

socket_read(): 远程主机强迫关闭了一个现有的连接。

bug 心得 服务器端程序: 客户端程序: 运行程序后出现错误:socket_read(): 远程主机强迫关闭了一个现有的连接. 服务器端程序修改及原因分析:

Adb connection Error:远程主机强迫关闭了一个现有的连接

做android开发的时候eclipse的console一直出现这个问题,有时候是启动eclipse后就出现这个问题,有时候是运行android程序的时候出现的,重启avd和重启eclipse都不行.后面在网上找到了解决办法. 先说原因嘛,这是ddms调用adb引发的. 经过一番搜索, 发现这是windows环境下, adb的一个限制, 也可以说是bug.  当手机上同时运行的进程数大于64时, 就会引发adb奔溃. 更深层次的原因, 就是windows API的WaitForMultipleO