feat(xingbang): agent 内置网关过载(503)指数退避重试

公司 DeepSeek 网关短时 CPU 过载返回 503, 五个智能体连续失败。
为每个 agent 增加 4 次指数退避重试(5s/10s/20s/40s), 提升流水线对限流波动稳健性。
This commit is contained in:
NathanAlex7
2026-09-01 17:05:07 +08:00
parent 9ef970320b
commit 28b505c9e6
2 changed files with 22 additions and 2 deletions
+1
View File
@@ -56,3 +56,4 @@ backend/xingbang_output/
backend/xingbang_evolution/
backend/diag_single_agent.py
backend/run_full_workflow.py
backend/verify_offline.py
+21 -2
View File
@@ -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: