1

我正在尝试在我的模块中实现/测试请求重试 - 下面是一个草稿,它具有我想要完成的基本功能。

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]>

这是由于设置了响应,还是我的初始配置不正确?

任何帮助将不胜感激 - 谢谢!

4

1 回答 1

0

实际上,您不是在寻找调用次数,而是在寻找执行的重试次数。如果是这样的话,我认为答案是response.raw.retries.history

我在这里找到了

于 2021-12-28T17:07:20.987 回答