我正在构建一个调用 API 的网络应用程序。我当前使用的 API(它会波动)的重生时间(可能不是正确的术语)为 210 秒。
请求中的 API 调用是:
r = requests.post(url ,headers=headers, auth=auth, data=json.dumps(data))
来电后r
可以等于<Response [404]>
或 <Response [200]>
.我想运行此 API 调用,直到它返回 <Response [200]>
. <Response [200]>
是什么格式在?
我当前的循环如下。有更好的方法吗?
while True:
r = requests.post(url ,headers=headers, auth=auth, data=json.dumps(data))
if (r == '<Response [200]>'): break
最佳答案
您将 repr()
输出与对象混淆了。
响应对象有一个 .status_code
attribute ,对此进行测试:
if r.status_code == 200:
break
但是,反复锤击服务直到它给您 200 响应很可能会阻止您的 IP 地址。内置某种 exponential back-off以防止对 API 进行 DOS 攻击。
关于python - 重试 <Response [404]> 直到我得到 <Response [200]>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18131761/