爬虫 requests的超时和重试

摘自

超时

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次

posted @ 2020-05-11 18:18  呓语i  阅读(903)  评论(0编辑  收藏  举报