【问题标题】:Retry for 5XX error occurrence on REST Call - POST Method重试 REST 调用时出现 5XX 错误 - POST 方法
【发布时间】:2023-03-21 08:58:01
【问题描述】:

我正在尝试对 POST 方法进行一次 REST API 调用。

将有大约 500 多个来自不同主机的同一端点调用。

导致503错误,因此我尝试使用requests模块的Retry功能实现重试机制。

即使在实现重试功能后仍然会遇到同样的错误。

代码sn-p如下:

import requests

requests.packages.urllib3.disable_warnings()
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.util.retry import Retry
import json

s = requests.Session()
retries = Retry(total=3, backoff_factor=0.3, status_forcelist=[502, 503, 504],
                method_whitelist=frozenset(['GET', 'POST']))
s.mount('https//', HTTPAdapter(max_retries=retries))
s.mount('http//', HTTPAdapter(max_retries=retries))
response = s.post(url, json=json_payload, headers=headers)

仍然出现 503 错误。

已经浏览过相同问题模式的先前答案,但我没有找到有关此的更多信息。

注意:这里的脚本是同时从 525 个主机执行的,所以大约 500 多个主机会尝试触发对 url(内部 url)的调用,所以这里 350 个主机我得到了正确的 200 响应,其他最终在 503错误。

如果我在这里遗漏了什么,请纠正我,感谢任何帮助。

【问题讨论】:

    标签: python python-2.7 python-requests


    【解决方案1】:

    基本上是代码中的拼写错误,导致重试失败机制无法正常工作。

    s.mount('https://', HTTPAdapter(max_retries=retries))
    s.mount('http://', HTTPAdapter(max_retries=retries))
    

    未在“http”/“https”中添加“:”。添加“:”后效果很好

    【讨论】:

      猜你喜欢
      • 2017-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-26
      • 1970-01-01
      相关资源
      最近更新 更多