python - 重试 <Response [404]> 直到我得到 <Response [200]>

标签 python django http response python-requests

我正在构建一个调用 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/

相关文章:

python - 如何在django中设置excel文件的路径

java - 如何在 Android 上使用 SHA-256

python - Kivy 在 macOS 上编译错误

python - 在 emacs python shell 中重新加载更改的 python 文件

python - MATLAB 和 Python 中线性规划的冲突解决方案

python - 从父类别 django rest 获取所有产品

带有输出类名的python计时器装饰器

python - 使用 NLP 进行地址拆分

python - HTTP 1.1 期望 header 握手

delphi - 如何使用 Indy 发送 DELETE 请求?