- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
与旧版本请求问题相关:Can I set max_retries for requests.request?
我还没有看到在 requests.get()
或 requests.post()
调用中干净地合并 max_retries
的示例。
想要一个
requests.get(url, max_retries=num_max_retries))
实现
最佳答案
快速搜索python-requests docs将reveal 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)
但是,由于以下几个原因,您要查找的内容不可配置:
请求不再提供配置方式
重试次数特定于正在使用的适配器,而不是 session 或特定请求。
如果一个请求需要一个特定的最大请求数,那么对于不同的请求应该就足够了。
这一变化是在一年前的 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/
我正在尝试异步使用 Web 服务,因为它最多需要 45 秒才能返回。不幸的是,这个 Web 服务也有些不可靠,可能会引发错误。我已经设置了 django-celery 并执行了我的任务,它可以正常工作
Python requests 模块简单而优雅,但有一件事让我很头疼。有可能得到一个 requests.exception.ConnectionError 并带有如下消息: Max retries e
这是我在 Arch Linux 上运行 pip install requests 时遇到的错误: Exception: Traceback (most recent call last): Fil
与旧版本请求问题相关:Can I set max_retries for requests.request? 我还没有看到在 requests.get() 或 requests.post() 调用中干
@app.task(bind=True, autoretry_for=(Exception,), retry_kwargs={'max_retries': 10, 'countdown': 5})
我是一名优秀的程序员,十分优秀!