InternalServerError: {"error":{"message":"upstream error: do request failed (req...
🚨 错误信息
🤖 AI解决方案
错误翻译
原文:InternalServerError: {"error":{"message":"upstream error: do request failed (request id: 20260116235626228131239SN1jlpef)","type":"rix_api_error","param":"","code":"do_request_failed"}}
译文:内部服务器错误:上游请求失败(请求ID:20260116235626228131239SN1jlpef)
原因分析
这个错误是典型的API网关或后端服务故障。具体原因通常是:
rix_api_error 和 do_request_failed 明确指示,是调用链中更后端的服务出现了问题,而非你代码中的逻辑或参数错误。解决方案
此类错误通常发生在服务端,客户端代码无法直接修复,但可以通过以下重试和错误处理机制来应对:
``python示例:在调用Gemini API的代码中添加重试逻辑和更健壮的错误处理
import time
import requests
from tenacity import retry, stop_after_attempt, wait_exponential, retry_if_exception_type
定义需要重试的异常(例如,5xx服务器错误或连接超时)
class ServerError(Exception):
pass
def is_server_error(exception):
# 判断是否为服务器端错误
if isinstance(exception, requests.exceptions.HTTPError):
return 500 <= exception.response.status_code < 600
return False
@retry(
stop=stop_after_attempt(3), # 最多重试3次
wait=wait_exponential(multiplier=1, min=2, max=10), # 指数退避等待
retry=retry_if_exception_type(ServerError) # 仅对服务器错误重试
)
def call_gemini_api(prompt, api_key):
url = "https://api.gemini.com/v1/chat/completions" # 示例URL,请替换为真实端点
headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
payload = {"prompt": prompt}
response = requests.post(url, json=payload, headers=headers, timeout=30)
response.raise_for_status() # 对于4xx/5xx状态码会抛出HTTPError
return response.json()
使用示例
try:
api_key = "your-api-key"
result = call_gemini_api("你的提示词", api_key)
print(result)
except requests.exceptions.HTTPError as e:
if 500 <= e.response.status_code < 600:
print(f"⚠️ 服务器端错误,请稍后重试。状态码:{e.response.status_code}")
# 可以在这里记录请求ID以便于追踪:request_id
可以从错误响应中解析
else:
print(f"❌ 客户端请求错误:{e}")
except Exception as e:
print(f"❌ 发生未知错误:{e}")
`️ 预防措施
实现优雅降级与重试:对于依赖外部API的核心功能,必须实现带有退避策略的重试机制(如指数退避),并设置合理的失败兜底方案(如返回缓存数据、默认值或友好的用户提示)。
加强监控与告警:
- 记录并监控错误率,特别是 5xx 错误和 do_request_failed 这类上游错误。
- 将请求ID(如 20260116235626228131239SN1jlpef`)记录到日志系统,当联系服务提供商(Gemini)技术支持时,提供此ID能极大加速问题排查。- 考虑使用APM(应用性能监控)工具来追踪整个调用链的健康状况。