Python 2.7 Python2.7:具有重试的请求不起作用
我正在使用返回503的url进行测试,希望脚本使用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
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
看看新的答案