`
holoblog
  • 浏览: 1217666 次
博客专栏
E0fcf0b7-6756-3051-9a54-90b4324c9940
SQL Server 20...
浏览量:18781
文章分类
社区版块
存档分类
最新评论

python 远程主机强迫关闭了一个现有的连接 socket 超时设置 errno 10054

 
阅读更多

python socket.error: [Errno 10054] 远程主机强迫关闭了一个现有的连接。问题解决方案:

前几天使用python读取网页。因为对一个网站大量的使用urlopen操作,所以会被那个网站认定为攻击行为。有时就不再允许下载。导致urlopen()后,request.read()一直卡死在那里。最后会抛出errno 10054.

这个错误是connection reset by peer.也就是传说的远端主机重置了此连接。原因可能是socket超时时间过长;也可能是request = urllib.request.urlopen(url)之后,没有进行request.close()操作;也可能是没有sleep几秒,导致网站认定这种行为是攻击。

具体解决方案如下面的代码:

因为urlopen之后的read()操作其实是调用了socket层的某些函数。所以设置socket缺省超时时间,就可以让网络自己断掉。不必在read()处一直等待。

当然你也可以再外层再写几个try,except,例如:

一般来说就莫有问题了。我测试了几千个网页的下载,然后才说出此话。不过如果是下载成千上万的,我做了下测试,ms还是会跳出这个异常。可能是time.sleep()的时间太短,也可能是网络突然中断。我使用urllib.request.retrieve()测试了一下,发现不停的下载数据,总会有失败的情况出现。

简单的处理方法是:首先参照的我的文章:python检查点简单实现 。先做一个检查点。然后将以上会跑出异常的那段代码while True一下。参见下面的伪代码:

不过对于找不到相应的网页,又要做另外的一番处理:

如果大家还是遇到了问题...请再评论里注上其他解决方案。

分享到:
评论

相关推荐

    python socket 超时设置 errno 10054

    python socket.error: [Errno 10054] 远程主机强迫关闭了一个现有的连接。问题解决方案: 前几天使用python读取网页。因为对一个网站大量的使用urlopen操作,所以会被那个网站认定为攻击行为。有时就不再允许下载。...

    wallproxy Errno 10054

    wallproxy Errno 10054 解决方法

    Python socket.error: [Errno 98] Address already in use的原因和解决方法

    查询相关文档才知道在socket编程中,当通过客户端向服务器端发送消息,关闭了连接后,这时如果马上再去运行服务器端程序,会提示这个错误: 复制代码 代码如下: socket.error: [Errno 98] Address already in use 这...

    Python学习笔记——socket通信相关资源文件

    Python学习笔记——socket通信相关资源文件 内部包括server1 2 3 + windows版 nc

    建立一个soket函数

    建立一个socket 函数: int socket(int domain, int type, int protocol); domain 指明所使用的协议族,通常为PF_INET,表示互联网协议族(TCP/IP 协议族);type 参数指定socket 的类型:SOCK_STREAM 或SOCK_DGRAM...

    Socket错误一览表

    网络编程Socket错误一览表Socket错误一览表

    python 多个参数不为空校验方法

    在实际开发中经常需要对...以上这篇python 多个参数不为空校验方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。 您可能感兴趣的文章:python 判断参数为Nonetype类型或空的

    Python提示[Errno 32]Broken pipe导致线程crash错误解决方法

    本文实例讲述了Python提示[Errno 32]Broken pipe导致线程crash错误解决方法。分享给大家供大家参考。具体方法如下: 1. 错误现象 ThreadingHTTPServer 实现的 http 服务,如果客户端在服务器返回前,主动断开连接,...

    解决 socket.gaierror: [Errno 11001] getaddrinfo failed

    因为在做一些网页数据集的处理,需要解析域名,整理Ip,故用到了, ...也就是说在我读取的每一行的域名后面是有一个换行符的。 接下来 就是去掉它 ‘\n’ like is 解释一下,这里去掉换行符的方式有两种: 用

    如何解决python.exe: can’t open file ‘manage.py’: [Errno 2] No such file or directory这个问题

    #本文章是记录我在开发一个基于python django的项目中的一些问题。本人新手小白,请多包涵。 使用pycharm新建一个Django工程。想新建一个app。在terminal中输入python manage.py startapp app时出现下列错误提示:...

    C语言头文件 ERRNO

    C语言头文件 ERRNOC语言头文件 ERRNOC语言头文件 ERRNOC语言头文件 ERRNOC语言头文件 ERRNOC语言头文件 ERRNOC语言头文件 ERRNOC语言头文件 ERRNOC语言头文件 ERRNOC语言头文件 ERRNOC语言头文件 ERRNOC语言头文件 ...

    errno(3) - Linux manual page.pdf

    当linux系统函数出错时,通常会返回一个负值,而且整型变量errno通常被设置为具有特定信息的值。例如,open 函数如果成功执行 则返回一个非负文件描述符,如出错则返回−1。在 open出错时,有大约15种不同的errno值(文件...

    python3.6.5参考手册 chm

    Python参考手册,官方正式版参考手册,chm版。以下摘取部分内容:Navigation index modules | next | Python » 3.6.5 Documentation » Python Documentation contents What’s New in Python What’s New In ...

    使用PHP访问MySQL数据库---连接数据库.pptx

    一、连接数据库 在程序中使用以下语句连接MySQL数据库服务器: @$db=new MySQLi('localhost','userName','password','databaseName'); 以上代码实例化了MySQLi类并且创建了到主机localhost的连接,该连接使用的...

    树莓派4B使用 Adafruit_PCA9685 报错IOError: [Errno 121] Remote I/O error解决办法

    树莓派4B使用 Adafruit_PCA9685 报错IOError: [Errno 121] Remote I/O error解决办法 首先,确保已经下载了python2或python3的Adafruit_PCA9685库,然后要明白,报该错原因是:Adafruit_PCA9685无法找到外部的硬件,...

    Python错误提示:[Errno 24] Too many open files的分析与解决

    最近在工作中发现了一个错误,在执行多线程扫描脚本的时候频繁出现下面这个错误 HTTPConnectionPool(host=‘t.tips', port=80): Max retries exceeded with url: /index.php (Caused by NewConnectionError('...

    Python实现简单http服务器

    写一个python脚本,实现简单的http服务器功能: 1.浏览器中输入网站地址:172.20.52.163:20014 2.server接到浏览器的请求后,读取本地的index.html文件的内容,回发给浏览器 代码实现 server.py #!/usr/bin/python ...

    Socket编程 c语言 (最新 带例程 可直接编译运行)

    Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。 部分代码(服务器): #include #include #include <errno.h> #...

    Python代码实现http/https代理服务器的脚本

    一个几百行代码做出http/https代理服务器的脚本,启动即可做http https透明代理使用 python proxy.py 8992 使用非阻塞io模式,性能还可以。 可以和浏览器一样保持长连接,代码有点乱,不管那么多了能跑就行 几百行...

Global site tag (gtag.js) - Google Analytics