do request failed
错误信息
upstream error: do request failed
AI 解决方案
##分析流程
1.错误翻译
原文:upstream error: do request failed
译文:上游错误:执行请求失败
2.原因分析
3.解决方案
以Python
requests库为例,添加超时控制+重试机制:import requests
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry
def call_upstream(url, method='GET', **kwargs):
session = requests.Session()
# 重试策略:最多3次,针对连接错误、5xx状态码
retry_strategy = Retry(
total=3,
backoff_factor=1,
status_forcelist=[429, 500, 502, 503, 504],
allowed_methods=["GET", "POST"]
)
adapter = HTTPAdapter(max_retries=retry_strategy)
session.mount("https://", adapter)
session.mount("http://", adapter)
try:
response = session.request(method, url, timeout=10, **kwargs) # 10秒超时
response.raise_for_status() # 抛出HTTP错误(4xx/5xx)
return response.json()
except requests.exceptions.RequestException as e:
raise Exception(f"上游请求失败: {str(e)}")
# 使用示例
try:
result = call_upstream("https://api.example.com/endpoint")
except Exception as e:
print(f"错误: {e}")