Python urllib3重试不应用于请求

Python urllib3重试不应用于请求,python,python-3.x,python-requests,Python,Python 3.x,Python Requests,我正在尝试编写一个get请求,每次重试5次,间隔1秒: import requests from urllib3.util.retry import Retry from requests.adapters import HTTPAdapter def new_session(): session = requests.Session() retries = Retry(total=5, backoff_factor=1, status_

我正在尝试编写一个get请求,每次重试5次,间隔1秒:

import requests
from urllib3.util.retry import Retry
from requests.adapters import HTTPAdapter

def new_session():
    session = requests.Session()
    retries = Retry(total=5, backoff_factor=1,
                    status_forcelist=[ 500, 502, 503, 504 ])
    session.mount("http://", HTTPAdapter(max_retries=retries))

    return session

job_url = "http://0.0.0.0:5601/api/reporting/jobs/download/k5rzq3o2000679ee9aeesc27"
session = new_session()

try:
    response = session.get(job_url)
    response.raise_for_status()
except Exception as e:
    print(e)

我希望
raise\u for_status()。
取而代之的是,get请求大约需要15秒,返回成功的200代码,并正确检索文件


为什么没有出错?当我指定了
total=5
backoff\u factor=1
时,为什么请求持续5秒以上?

我完全不知道你在问什么。您已经设置了重试次数(针对错误)并且存在超时(针对错误)。没有错误。为什么您的代码会在成功连接后重试?“由于非200响应代码”和“…返回成功的200代码”?您的请求没有失败,所以请重试,在此处执行任何操作。此外,请求确实有一个名为
timeout
的参数-我认为这就是在请求未失败的情况下所要查找的参数。@roganjosh该请求并不意味着返回200响应代码。它返回成功的唯一原因是它有足够的时间处理请求。它工作,但它不应该!所以我想弄明白为什么请求会持续15秒而不是5秒,因为我需要控制它@Charnel我不想使用timeout,因为您需要为每个请求指定它。我想在创建会话时指定重试次数