我对这段代码遇到了一些问题,我无法弄清楚原因。
当我跑步时:
try: r = requests.get('https://httpbin.org/get', timeout=10, headers={'Cache-Control': 'nocache', 'Pragma': 'nocache'}) r.raise_for_status() return r.json() except (requests.exceptions.RequestException, ValueError): return False
注意:主机已更改为隐私,实际服务方式 更不稳定/越野车。
我偶尔会遇到这个错误:
requests.exceptions.ReadTimeout:HTTPConnectionPool(host ='https://httpbin.org/get',port = 80):读取超时。 (读取超时= 10)
我无法理解出了什么问题;
我似乎正在正确地抓住requests.exceptions.RequestException
的{{1}}的超集/父母requests.exceptions.ReadTimeout
。
编辑:似乎更新请求已经修复了它。
答案 0 :(得分:0)
复制错误会很好,到目前为止我尝试过下面的代码, 但它仍然会暂停。
import requests
try:
r = requests.get('http://httpstat.us/200?sleep=1000',
timeout=0.01,
headers={'Cache-Control': 'nocache', 'Pragma': 'nocache'})
r.raise_for_status()
print(r.json())
except (requests.exceptions.RequestException, ValueError) as e:
print('Error caught!')
print(e)
打印:
Error caught!
HTTPConnectionPool(host='192.168.1.120', port=8080): Read timed out. (read timeout=0.01)
即使是最小的形式,你仍然会抓住requests.exceptions.ReadTimeout
:
try:
raise requests.exceptions.ReadTimeout
except requests.exceptions.RequestException:
print('Caught ReadTimeout')
我最好的猜测是,您的异常出现在代码的其他部分,但不是在此示例中。