- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在构建一个 Python 脚本,该脚本在我的数据库中搜索所有 URL,然后按照 URL 查找损坏的链接。该脚本在打开链接时遇到错误时需要使用异常处理来记录,但是它开始遇到错误,我完全无法为以下内容编写 except 语句:
Traceback (most recent call last):
File "exceptionerror.py", line 97, in <module>
raw_response = response.read().decode('utf8', errors='ignore')
File "/usr/lib/python3.4/http/client.py", line 512, in read
s = self._safe_read(self.length)
File "/usr/lib/python3.4/http/client.py", line 662, in _safe_read
chunk = self.fp.read(min(amt, MAXAMOUNT))
File "/usr/lib/python3.4/socket.py", line 371, in readinto
return self._sock.recv_into(b)
ConnectionResetError: [Errno 104] Connection reset by peer
我试过以下方法:
except SocketError as inst:
brokenlinksflag = 1
brokenlinks = articlelinks[j] + ' ' + sys.exc_info()[0] + ', ' + brokenlinks
continue
和:
except ConnectionResetError as inst:
brokenlinksflag = 1
brokenlinks = articlelinks[j] + ' ' + sys.exc_info()[0] + ', ' + brokenlinks
continue
甚至是一个完整的通用异常来 try catch 所有错误,这样它就不会杀死整个脚本:
except:
print("This link was not caught by defined exceptions: " + articlelinks[j])
continue
我完全不知道如何让我的脚本捕获此错误,以便它可以继续检查损坏的链接而不是硬失败。它是间歇性的,所以我不认为链接已损坏,而且我觉得即使我已经确定了 URL,但简单地捕获它并事先跳过它是作弊,因为我的目标是正确处理异常。有人可以建议我如何处理这个异常吗?
作为引用,这是我的完整循环:
for j in range(0, len(articlelinks)):
try:
req=urllib.request.Request(articlelinks[j], None, {'User-agent' : 'Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.0'})
response = urllib.request.urlopen(req)
except urllib.request.HTTPError as inst:
brokenlinksflag = 1
brokenlinks = articlelinks[j] + ' ' + format(inst) + ', ' + brokenlinks
continue
except TimeoutError:
brokenlinksflag = 1
brokenlinks = articlelinks[j] + ' Timeout Error, ' + brokenlinks
continue
except urllib.error.URLError as inst:
brokenlinksflag = 1
brokenlinks = articlelinks[j] + ' ' + format(inst) + ', ' + brokenlinks
continue
except SocketError as inst:
brokenlinksflag = 1
brokenlinks = articlelinks[j] + ' ' + sys.exc_info()[0] + ', ' + brokenlinks
continue
except:
print("This article killed everything: " + articlelinks[j])
exit()
最佳答案
解决了!问题是我正在对连接进行故障排除以处理 ConnectionResetError,但是,对完整错误的更仔细检查表明错误是通过尝试处理响应而不是打开 url 引发的:
File "exceptionerror.py", line 97, in <module>
raw_response = response.read().decode('utf8', errors='ignore')
因为连接被重置,而不是完全终止,脚本能够成功打开 URL,并且在尝试解码响应时产生错误,这意味着 try/except 条件围绕错误行。
以下解决了问题:
try:
raw_response = response.read().decode('utf8', errors='ignore')
except ConnectionResetError:
brokenlinksflag = 1
brokenlinks = articlelinks[j] + ' ConnectionResetError, ' + brokenlinks
continue
关于python - 用 Python 捕获 ConnectionResetError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32364674/
我有一个关于在 Python3 中处理 ConnectionResetError 的问题。这通常发生在我使用 urllib.request.Request 函数时。我想知道如果我们遇到这样的错误是否可
我是 python 的新手。下面的函数给出了 imdb 中的电影和导演名称。它适用于单个链接。但是,当我为大量链接运行它时,它会出现 ConnectionResetError: [WinError 1
# -*- coding: UTF-8 -*- import urllib.request import re import os os.system("cls") url=input("Url Li
我是 Python 3 的新手,正在使用 asyncio。因此,我在以下服务器端代码中遇到了奇怪的行为: import asyncio @asyncio.coroutine def handle_cl
我正在尝试使用以下问题中的代码将文件上传到 S3 存储桶:https://stackoverflow.com/a/15087468/291372 。我正在使用 boto2 (boto3 有太多依赖项)
长话短说 我的问题很简单 - 在调用 self._sslobj.read(len, buffer) rows = (row for row in reader) File "/XXX/lib/pyth
使我的程序崩溃的异常如下: Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versio
当使用 selenium 和 chromedriver 在 django 站点上运行测试时,我收到很多 ConnectionResetErrors。完整的错误输出包含在底部。请注意,即使如此,测试也能
我尝试使用 PUT REST Api 上传文件,但收到 ConnectionResetError 。我尝试过使用 urllib.request.Request()与 urllib.request.ur
我正在构建一个 Python 脚本,该脚本在我的数据库中搜索所有 URL,然后按照 URL 查找损坏的链接。该脚本在打开链接时遇到错误时需要使用异常处理来记录,但是它开始遇到错误,我完全无法为以下内容
编辑:澄清一下:它确实可以编译,但在流加载后几乎立即崩溃。 它确实连接正确。 所以,我已经尝试了很长时间来完成我的这个项目。我想做的是使用 cv2 通过套接字发送视频源。它通过 LAN 运行,而不是通
我有一个 Flask Rest api 应用程序,具有以下设置。 已安装的软件包 alembic==1.3.0 aniso8601==8.0.0 astroid==2.3.3 attrs==19.3.
客户端: data = b'\xff' * 1000000 ssock = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0) #context
我和你们中的许多人有类似的问题,但无法解决。我正在生成一个在我的 VirtualBox Linux 7.3 和 7.9 上运行良好的自执行文件,但是当我尝试在其他地方(在其他 Linux 服务器上)运
这个问题在这里已经有了答案: Selenium headless browser webdriver [Errno 104] Connection reset by peer (3 个答案) 关闭
我正在使用 python 3.6 并使用最新版本的 chromedriver,我尝试使用旧版本的 chromedriver,我遇到了同样的问题,重新启动了我的电脑,同样的问题。这是我运行以重现错误的代
通过stackoverflow搜索并发布这个问题,因为没有解决方案对我有用,我的问题可能与其他问题不同。 我正在编写一个脚本,它从rabbitMQ 队列中获取一篇文章并处理该文章以计算单词并从中提取关
我有这个讨厌的错误: Traceback (most recent call last): File "/home/ubuntu/.local/lib/python3.5/site-package
我正在使用 selenium 模块,但突然出现此错误 ConnectionResetError: [WinError 10054] An existing connection was forcibl
我有 socket 问题 import socket serverName = "herk-PC" serverPort = 12000 clientSocket = socket.socket(so
我是一名优秀的程序员,十分优秀!