在 Python 中对请求应用重试

2023-11-29

我有一个 URL 列表,我想使用 Python 对其执行 HTTP Get 请求grequests module.

某些 URL 不会返回“正常”状态,在这种情况下,我想重试该 URL。

我可以使用一个队列来做到这一点,该队列存储所有尚未尝试过的 URL,或者在之前的尝试中未返回 200 的 URL,并继续批量发送请求。我正在寻找一个更干净/更“Pythonic”的实现。

我已经用过retrying之前重试的模块非常简洁。我想知道是否有一些类似的、简洁的实现来重试 grequests 发送的请求。


您可以将自己的请求会话传递给 grequests 并在该会话上设置重试,即。

    s = requests.Session()
    retries = Retry(total=5, backoff_factor=0.2, status_forcelist=[500, 502, 503, 504], raise_on_redirect=True,
                    raise_on_status=True)
    s.mount('http://', HTTPAdapter(max_retries=retries))
    s.mount('https://', HTTPAdapter(max_retries=retries))
    reqs = (grequests.get(url, session=s) for url in urls)
    for resp in grequests.imap(reqs, stream=False):
        ...

如果你想要流式传输,你可以设置stream=True。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Python 中对请求应用重试 的相关文章

随机推荐