摘自
- https://requests.readthedocs.io/zh_CN/latest/user/quickstart.html#id10
- https://requests.readthedocs.io/zh_CN/latest/user/advanced.html#timeout
超时
requests.get("http://example.com", timeout=1)
requests.get("http://example.com", timeout=(3,5)) # connect和read单独定制
requests.get("http://example.com", timeout=None) # 永远等待
连接超时是客户端实现到远端机器端口的连接超时。最好将连接超时设置为比3的倍数略大的数值
连接超时是发起请求连接到建立连接之间的最大时长
读取超时是客户端等待服务器发送请求的时间。
错误和异常
遇到网络问题(如:DNS 查询失败、拒绝连接等)时,Requests 会抛出一个 ConnectionError
异常。
如果 HTTP 请求返回了不成功的状态码, Response.raise_for_status()
会抛出一个 HTTPError
异常。
若请求超时,则抛出一个 Timeout
异常。
若请求超过了设定的最大重定向次数,则会抛出一个 TooManyRedirects
异常。
所有Requests显式抛出的异常都继承自 requests.exceptions.RequestException
。
重试
from requests.adapters import HTTPAdapter
s = requests.Session()
s.mount('http://', HTTPAdapter(max_retries=3))
s.mount('https://', HTTPAdapter(max_retries=3))
max_retries为最大重试次数,重试3次,加上最初的一次请求,共4次