gpt4 book ai didi

python - 在 Python 请求 get 或 post 方法上干净地设置 max_retries

转载 作者:IT老高 更新时间:2023-10-28 21:17:51 27 4
gpt4 key购买 nike

与旧版本请求问题相关:Can I set max_retries for requests.request?

我还没有看到在 requests.get()requests.post() 调用中干净地合并 max_retries 的示例。

想要一个

requests.get(url, max_retries=num_max_retries))

实现

最佳答案

快速搜索python-requests docsreveal exactly how to set max_retries使用 Session 时。

直接从文档中提取代码:

import requests
s = requests.Session()
a = requests.adapters.HTTPAdapter(max_retries=3)
b = requests.adapters.HTTPAdapter(max_retries=3)
s.mount('http://', a)
s.mount('https://', b)
s.get(url)

但是,由于以下几个原因,您要查找的内容不可配置:

  1. 请求不再提供配置方式

  2. 重试次数特定于正在使用的适配器,而不是 session 或特定请求。

  3. 如果一个请求需要一个特定的最大请求数,那么对于不同的请求应该就足够了。

这一变化是在一年前的 requests 1.0 中引入的。我们故意将其保留在 2.0 中,因为它最有意义。我们也不会引入一个参数来配置最大重试次数或其他任何东西,以防您想问。


编辑使用类似的方法,您可以更好地控制重试的工作方式。您可以阅读this好好感受一下。简而言之,您需要从 urllib3 (见下文)导入 Retry 类并告诉它如何运行。我们将其传递给 urllib3,您将有一组更好的选项来处理重试。

from requests.packages.urllib3 import Retry
import requests

# Create a session
s = requests.Session()

# Define your retries for http and https urls
http_retries = Retry(...)
https_retries = Retry(...)

# Create adapters with the retry logic for each
http = requests.adapters.HTTPAdapter(max_retries=http_retries)
https = requests.adapters.HTTPAdapter(max_retries=https_retries)

# Replace the session's original adapters
s.mount('http://', http)
s.mount('https://', https)

# Start using the session
s.get(url)

关于python - 在 Python 请求 get 或 post 方法上干净地设置 max_retries,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21371809/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com