使用 requests
Python 库进行 GET 请求,并处理超时异常(以及其他我未在此处展示的异常)如下:
import requests
timeout1=20
timeout2=40
try:
#first attempt
resp = requests.get(base_url+resource, params=payload, headers=headers,
timeout=timeout1)
except requests.exceptions.Timeout:
#timed out, retry once
try:
resp = requests.get(base_url+resource, params=payload, headers=headers,
timeout=timeout2)
return resp.json()
except requests.exceptions.RequestException as e:
#Still failed; return error code
return -1
大多数时候这个程序都能正常运行,但有时会因为错误socket.timeout: timed out
而完全退出,而不是抛出requests.exceptions.Timeout
让我来处理。
requests库为什么会这样?我该如何处理?