gpt4 book ai didi

python - 使用 Python "requests"库,如何判断 ConnectionError 是客户端还是服务器端?

转载 作者:太空宇宙 更新时间:2023-11-03 14:29:16 25 4
gpt4 key购买 nike

现在这是我丑陋的小代码片段:

for i in range(5):
try:
self.startTime=time.time()
self.rawfeed=requests.get(self.feedurl)
continue
except ConnectionError:
print "Got a connection error. Retrying", i
time.sleep(i*i) # giving a bit longer wait each time
pass
if i == 5: raise
self.ResponseTime=time.time()-self.startTime

这里有两个问题。首先,我的 except 语句似乎没有将“ConnectionError”识别为异常(已解决,谢谢,堆垛机),而是提示它不是全局变量。其次,更重要的是,我真的很想知道错误是在我这边,还是在服务器这边。

通常我想重试我的错误,但放弃并报告服务器错误。 (“我的”错误指的是服务器错误以外的任何错误。)

最佳答案

查看 requests 源代码,ConnectionError 仅在重试最大次数 (MaxRetryError) 时引发。

except MaxRetryError, e:
if not self.config.get('safe_mode', False):
raise ConnectionError(e)

很难说这是您一方还是服务器造成的,因为双方的很多问题都可能导致完全相同的错误。例如,如果服务器的 HTTP 守护进程没有运行,您的连接尝试就会超时。如果您在路由器中阻止它们,或者如果您的路由器由于某些其他原因断开连接,也会发生完全相同的事情。

Exception HTTPError,虽然您没有捕捉到,但更可能是服务器错误,您可能会死于该错误。 ConnectionError 有点可能是您自己,但完全不能保证。

您的第二个问题是您没有正确导入这些类。将您的 except 更改为 except requests.ConnectionError,或者执行 from requests import ConnectionError, HTTPError

关于python - 使用 Python "requests"库,如何判断 ConnectionError 是客户端还是服务器端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14236426/

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