我正在尝试在我的模块中实现/测试请求重试 - 下面是一个草稿,它具有我想要完成的基本功能。
import requests
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.util.retry import Retry
import responses
retry_strategy = Retry(
total=3,
status_forcelist=[429, 500, 502, 503, 504],
method_whitelist=["HEAD", "GET", "OPTIONS"]
)
adapter = HTTPAdapter(max_retries=retry_strategy)
http = requests.Session()
http.mount("https://", adapter)
http.mount("http://", adapter)
with responses.RequestsMock() as rsps:
rsps.add(responses.GET,
"https://en.wikipedia.org/w/api.php",
status=502)
response = http.get("https://en.wikipedia.org/w/api.php")
print(len(rsps.calls))
print(response)
基本设置来自这篇文章,尽管在 stackoverflow 的其他地方使用。
我希望len(rsps.calls)
是 3,因为据我了解,这是我们在放弃之前尝试的重试次数。但是,输出却是;
1
<Response [502]>
这是由于设置了响应,还是我的初始配置不正确?
任何帮助将不胜感激 - 谢谢!