feat(xingbang): agent 内置网关过载(503)指数退避重试
公司 DeepSeek 网关短时 CPU 过载返回 503, 五个智能体连续失败。 为每个 agent 增加 4 次指数退避重试(5s/10s/20s/40s), 提升流水线对限流波动稳健性。
This commit is contained in:
@@ -114,8 +114,27 @@ class XingbangAgent:
|
||||
"system": self.spec.system_prompt[:500],
|
||||
"task": task[:300],
|
||||
})
|
||||
result = await agent.ainvoke({"messages": messages})
|
||||
final = self._extract_text(result)
|
||||
import asyncio
|
||||
max_retries = 4
|
||||
backoff = 5 # 初始等待秒
|
||||
last_err = None
|
||||
for attempt in range(max_retries):
|
||||
try:
|
||||
result = await agent.ainvoke({"messages": messages})
|
||||
final = self._extract_text(result)
|
||||
break
|
||||
except Exception as e: # noqa
|
||||
last_err = e
|
||||
msg = str(e)
|
||||
# 仅对 503/限流 重试
|
||||
if "503" in msg or "overloaded" in msg or "429" in msg:
|
||||
if attempt < max_retries - 1:
|
||||
await asyncio.sleep(backoff * (2 ** attempt))
|
||||
continue
|
||||
else:
|
||||
raise # 非限流错误立即失败
|
||||
else:
|
||||
raise RuntimeError(f"网关过载重试后仍失败: {last_err}")
|
||||
# 保存产出到文件
|
||||
file_path = None
|
||||
if self._output_dir:
|
||||
|
||||
Reference in New Issue
Block a user