dav*_*vid 5 python python-requests
在我的 django 项目中,我正在调用提取一些数据。
我组织了下面的代码,以便如果 get 请求失败,它将被忽略,并且函数的其余部分将继续(请不要谈论这是否是不好的做法)。
job_results=[]
try:
resp = requests.get(mongo_job_results)
for item in resp.json():
job_results.append(item)
except ConnectionError:
pass
Run Code Online (Sandbox Code Playgroud)
我仍然收到以下错误:
Exception Type: ConnectionError
Exception Value:
('Connection aborted.', OSError(99, 'Cannot assign requested address'))
Run Code Online (Sandbox Code Playgroud)
我在这里缺少什么?
你错过了 Python 命名空间的乐趣。该requests库有自己的类requests.exceptions.ConnectionError(http://docs.python-requests.org/en/master/api/#requests.ConnectionError)。此类的实例由调用引发get。
您的代码引用的类ConnectionError是 python 内置类ConnectionError(https://docs.python.org/3.4/library/exceptions.html#ConnectionError)。
这两个不是同一个类,因此解释器最终不会执行该except块,因为您没有捕获所引发的类的实例。
要解决此问题,您需要执行以下操作,这将覆盖对模块名称from requests.exceptions import ConnectionError空间内置的引用。ConnectionError
另一种可以说更干净的选择是捕获requests.exceptions.ConnectionError- 这可以清楚地表明您打算捕获哪个连接错误类。
尝试捕获requests connectionError (而不是OSError的子类)。
所以而不是
except ConnectionError:
做
except requests.exceptions.ConnectionError:
| 归档时间: |
|
| 查看次数: |
1675 次 |
| 最近记录: |