我必须使用请求模块来获取大量URL。由于网络错误,我想实现重试机制。所以我的代码看起来像这样:

from requests.adapters import HTTPAdapter
from requests.packages.urllib3.util.retry import Retry
import requests

session = requests.Session()
retry = Retry(total=1,backoff_factor=0.5,status_forcelist=(500,502,504,503))
adapter = HTTPAdapter(max_retries=retry)
session.mount('http://', adapter)
session.mount('https://',adapter)
head_response = session.get(url,timeout=2)


但是,当URL为:tiffins.NET时,代码将继续挂起。超时= 2的普通request.get给出503状态代码,但不会挂起。

难道我做错了什么?

我正在使用python 2.7.15rc1。

最佳答案

只是遇到了同样的问题,并发现这是由于网站标题“ Retry-After”。默认情况下,重试使用该值来等待下一个请求。若要忽略它,请在创建重试对象时将respect_retry_after_header参数设置为False

关于python - 重试python请求模块挂起,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54546364/

10-12 21:22