Python 请求 - 异常类型:ConnectionError - 尝试:除了不起作用
Posted
技术标签:
【中文标题】Python 请求 - 异常类型:ConnectionError - 尝试:除了不起作用【英文标题】:Python requests - Exception Type: ConnectionError - try: except does not work 【发布时间】:2014-02-19 20:14:18 【问题描述】:我正在使用 web 服务来检索一些数据,但有时 url 不起作用并且我的网站没有加载。您知道我如何处理以下异常,以便网站在 web 服务不工作的情况下没有问题吗?
Django Version: 1.3.1
Exception Type: ConnectionError
Exception Value:
HTTPConnectionPool(host='test.com', port=8580): Max retries exceeded with url:
我用过
try:
r = requests.get("http://test.com", timeout=0.001)
except requests.exceptions.RequestException as e: # This is the correct syntax
print e
sys.exit(1)
但什么也没发生
【问题讨论】:
我不确定,但不应该是except requests.exceptions.RequestException, e:
吗?你也说你有ConnectionError
作为一个例外,但我没有看到你捕捉到这个特定的例外......
好吧,因为我是 python 新手,所以我从这里找到了答案:***.com/questions/16511337/…
【参考方案1】:
你不应该退出你的工作实例sys.exit(1)
此外,您遇到了错误的错误。
例如,您可以做的是:
from requests.exceptions import ConnectionError
try:
r = requests.get("http://example.com", timeout=0.001)
except ConnectionError as e: # This is the correct syntax
print e
r = "No response"
在这种情况下,您的程序将继续,设置 r
的值,这通常会将响应保存为任何默认值
【讨论】:
抱歉没有看到你发现了错误的错误:你得到了一个 ConnectionError,所以你需要抓住这个(见编辑的答案) 有效!非常感谢!但我用除了 requests.exceptions.ConnectionError 作为 e: ConnectionError 也是一个内置错误类型的名称——当他们有如此可怕的命名习惯时,这怎么能成为一个广泛使用的包? str 和 repr 都没有表明该类不是内置类。它甚至没有从内置的 ConnectionError 继承,而是从 OSError 继承(真正的内置也是如此)。以上是关于Python 请求 - 异常类型:ConnectionError - 尝试:除了不起作用的主要内容,如果未能解决你的问题,请参考以下文章