【发布时间】:2011-02-15 05:17:30
【问题描述】:
这是我目前正在使用的代码:
url = locations[state]['url']
headers = {'User-Agent':'Firefox/3.6.13'}
req = urllib.request.Request(url, headers=headers)
try:
resp = urllib.request.urlopen(req)
except:
print('Caught error, trying again...')
print('This should be handled better, I\'m sorry')
time.sleep(2)
resp = urllib.request.urlopen(req)
我遇到的问题,因此我真正关心的异常是在发出请求时偶尔会发生这种情况:
URLError: <urlopen error [Errno 104] Connection reset by peer>
这不是确切的错误,我认为这可能是针对 python 2.x 的 urllib/urllib2 而我在 python3 上,我认为是 urllib.error.URLError iirc。无论如何,我知道我可以做除了 URLError 并且它应该可以工作(虽然我想知道我是否需要做 urllib.error.URLError ,因为这是我的报告),但是我如何测试以确保它是因为104.我希望它一直重试请求直到它得到它,或者至少尝试指定次数,我将如何最优雅地做到这一点?
从我可以找到的错误 104 是因为我的本地路由器无法处理请求并吓坏了,我猜是因为它不能这么快处理请求?如果有人对造成这种情况的原因有任何进一步的了解,那也会有所帮助,但我并不太担心。
【问题讨论】:
标签: python exception exception-handling python-3.x urllib