gpt4 book ai didi

python - 需要有关 python 异常处理的帮助

转载 作者:太空宇宙 更新时间:2023-11-04 06:38:29 24 4
gpt4 key购买 nike

这是我目前正在使用的代码:

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 是因为我的本地路由器无法处理请求并吓坏了,我猜是因为它无法如此快速地处理请求?如果有人对导致这种情况的原因有任何进一步的了解,那也会有所帮助,但我不太担心。

最佳答案

看看http://docs.python.org/py3k/library/urllib.error.html

查看异常的 reason 属性后,您应该能够确定:

  1. reason 属性是否为 socket.error 实例?
  2. 如果是这样,该错误的值是否为二元组,第一个元素对应于 errno.ECONNRESET

关于python - 需要有关 python 异常处理的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5000138/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com