【问题标题】:How to use urllib3.Retry?如何使用 urllib3.Retry?
【发布时间】:2019-12-16 08:17:59
【问题描述】:

我找到了下一个例子

def prepare_retry_requester(retries: int = 5, forcelist: List = (503,)) -> requests.Session:
    requester = requests.Session()
    retry = urllib3.Retry(total=retries, backoff_factor=1, status_forcelist=forcelist)
    for protocol in 'http://', 'https://':
        requester.mount(protocol, requests.adapters.HTTPAdapter(max_retries=retry))
    return requester


with prepare_retry_requester(forcelist=[502, 503, 413]) as requester:
    response = requester.post(url, data=serialized)

但如果我得到502 错误一段时间(服务器正在重新启动 10 秒),它仍然会失败。

【问题讨论】:

  • 您将 max_retries 传递给 HTTPAdapter,它不会从 502 错误中恢复(按设计),因为它不是连接错误(而是应用错误)。您可以改为将retries 传递给http.request。见docs
  • @BenjaminGruenbaum 这应该是一个答案。 :)

标签: python-3.x urllib3


【解决方案1】:

您将 max_retries 传递给 HTTPAdapter,它不会从 502 错误中恢复(按设计),因为它不是连接错误(而是应用错误)。您可以改为将重试传递给 http.request。请参阅retrying docs

【讨论】:

    猜你喜欢
    • 2015-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-29
    相关资源
    最近更新 更多