我正在使用urllib.request
从互联网上下载文件。但有时我得到Connection Reset by Peer
并且我想重试。
我尝试了以下内容,但似乎e.errno包含socket error
而不是实际的错误:
while True:
try:
filename, headers = urllib.request.urlretrieve(url)
break
except IOError as e:
if e.errno != errno.ECONNRESET:
raise
except Exception as e:
raise
有什么建议吗?
答案 0 :(得分:3)
首先,不需要这部分。
except Exception as e:
raise
IOError的参数是错误类型(套接字错误)和给出的错误。反过来,这个错误不是原始错误,但是错误在args中,所以......
except IOError as e:
if e.args[1].args[0].errno != errno.ECONNRESET:
raise
应该有效。我没有可以重置的服务器,所以我不能100%测试它但它适用于ECONNREFUSED。 : - )