Python 2.7 Python2.7:具有重试的请求不起作用

Python 2.7 Python2.7:具有重试的请求不起作用,python-2.7,python-requests,Python 2.7,Python Requests,我正在使用返回503的url进行测试,希望脚本使用backoff\u factor为1的max\u retries函数请求url。根据我的8次重试,理论上请求应该花费至少64秒的时间来处理请求,但它只是直接打印响应503,我认为它实际上不会重试8次。我甚至将退避系数增加到20,并且仍然立即打印出响应503 from requests.packages.urllib3.util.retry import Retry from requests.adapters import HTTPAdapter

我正在使用返回503的url进行测试,希望脚本使用
backoff\u factor
为1的
max\u retries
函数请求url。根据我的8次重试,理论上请求应该花费至少64秒的时间来处理请求,但它只是直接打印响应503,我认为它实际上不会重试8次。我甚至将退避系数增加到20,并且仍然立即打印出响应503

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

url = 'http://httpstat.us/503'
s = requests.Session()
retries = Retry(total=8, backoff_factor=1, status_forcelist=[ 502, 503, 504 ])
s.mount('http://', HTTPAdapter(max_retries=retries))
response = s.get(url)
print response
我一直在检查其他帖子,并尝试使用
s.mount('http://',requests.adapters.HTTPAdapter(max_retries=retries))
,结果类似。 如何让脚本真正重试8次并确认它确实重试了? 请告知此解决方案是否适用于
HTTP
https

当我呼叫重试时

>>> retries
Retry(total=8, connect=None, read=None, redirect=None)
输入正确吗?
我基于解决方案,但它似乎不会重试。有人能帮忙吗?

更新最新评论。不要使用urllib3函数,而是使用您自己的:

>>> def test():
    return requests.get("http://httpstat.us/503").status_code

>>> def main():
    total_retries = 0
    code = test()
    while code == 503 or 502 or 504:
        total_retries+=1
        if total_retries > 8:
            print("8 retries hit")
            break
        code = test()

        
>>> main()
8 retries hit
>>> 

使用503、504、502代码重试8次后,此操作将停止。

1)当服务器出错或出现客户端异常时,服务器的响应时间将快得多。2) 假设服务器设置正确,503表示服务/端点不可用。否。我以503为例。URL只是一个例子。您可以使用返回503的任何URL。我的意思是,即使是错误503,脚本也不会重试,这是什么问题?如果这只是一个“示例”问题,那么您必须显示您请求的URL。这是一个服务器端错误,所以不是客户机而是服务器“搞乱了”。阅读我所说的,你所做的真的没有意义。你可以使用
http://httpstat.us/503
使用此URL确认503不会重试
http://httpstat.us/503
看看新的答案