feat(xingbang): agent 内置网关过载(503)指数退避重试
公司 DeepSeek 网关短时 CPU 过载返回 503, 五个智能体连续失败。 为每个 agent 增加 4 次指数退避重试(5s/10s/20s/40s), 提升流水线对限流波动稳健性。
This commit is contained in:
@@ -56,3 +56,4 @@ backend/xingbang_output/
|
|||||||
backend/xingbang_evolution/
|
backend/xingbang_evolution/
|
||||||
backend/diag_single_agent.py
|
backend/diag_single_agent.py
|
||||||
backend/run_full_workflow.py
|
backend/run_full_workflow.py
|
||||||
|
backend/verify_offline.py
|
||||||
|
|||||||
@@ -114,8 +114,27 @@ class XingbangAgent:
|
|||||||
"system": self.spec.system_prompt[:500],
|
"system": self.spec.system_prompt[:500],
|
||||||
"task": task[:300],
|
"task": task[:300],
|
||||||
})
|
})
|
||||||
result = await agent.ainvoke({"messages": messages})
|
import asyncio
|
||||||
final = self._extract_text(result)
|
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
|
file_path = None
|
||||||
if self._output_dir:
|
if self._output_dir:
|
||||||
|
|||||||
Reference in New Issue
Block a user