refactor: 简化错误处理,直接展示原始API返回信息

- 移除 base_client.py 中针对各HTTP状态码的中文友好提示
- 移除 gemini_client.py 和节点中的重复错误打印
- 关闭调试日志和请求体日志输出(DEBUG_LOG_ENABLED=False)
- 保留跳过错误功能但默认关闭
- 错误仅通过ComfyUI异常机制统一展示一次

Co-Authored-By: Claude Opus 4.6 <[email protected]>
This commit is contained in:
o1key
2026-04-09 18:37:55 +08:00
co-authored by Claude Opus 4.6
parent 0ddc571f20
commit bbc5f4a2c4
4 changed files with 9 additions and 142 deletions
+1 -90
View File
@@ -178,96 +178,7 @@ class BaseAPIClient(ABC):
if response.status != 200:
error_text = await response.text()
# 尝试解析 JSON 错误信息,提取关键内容
error_message = error_text
try:
error_json = json.loads(error_text)
# 尝试从多个常见位置提取错误信息
if "error" in error_json:
if isinstance(error_json["error"], dict):
error_message = error_json["error"].get("message", error_text)
else:
error_message = str(error_json["error"])
elif "message" in error_json:
error_message = error_json["message"]
except:
# 如果不是 JSON,使用原始文本
pass
# 针对常见错误状态码提供友好提示
if response.status == 400:
raise RuntimeError(
f"请求参数错误 (400 Bad Request)\n"
f"API 返回错误:{error_message}\n"
f"建议:\n"
f" - 检查 API 密钥是否有效\n"
f" - 确认请求参数格式正确"
)
elif response.status == 401:
raise RuntimeError(
f"认证失败 (401 Unauthorized)\n"
f"API 返回错误:{error_message}\n"
f"建议:\n"
f" - 检查 API 密钥是否正确\n"
f" - 确认 API 密钥是否过期"
)
elif response.status == 403:
raise RuntimeError(
f"权限不足 (403 Forbidden)\n"
f"API 返回错误:{error_message}\n"
f"建议:\n"
f" - 检查 API 密钥权限\n"
f" - 确认账户余额充足"
)
elif response.status == 404:
raise RuntimeError(
f"端点不存在 (404 Not Found)\n"
f"API 返回错误:{error_message}\n"
f"建议:\n"
f" - 检查模型名称是否正确\n"
f" - 使用其他可用模型"
)
elif response.status == 429:
custom = self.get_http_error_message(429, error_message)
if custom is not None:
raise RuntimeError(custom)
raise RuntimeError(
f"请求频率超限 (429 Too Many Requests)\n"
f"API 返回错误:{error_message}\n"
f"建议:\n"
f" - 等待一段时间后重试\n"
f" - 检查 API 配额是否充足"
)
elif response.status == 503:
custom = self.get_http_error_message(503, error_message)
if custom is not None:
raise RuntimeError(custom)
raise RuntimeError(
f"服务暂时不可用 (503 Service Unavailable)\n"
f"API 返回错误:{error_message}\n"
f"建议:\n"
f" - 稍后重试\n"
f" - 尝试使用其他模型"
)
elif response.status == 504:
raise RuntimeError(
f"API 请求超时 (504 Gateway Timeout)\n"
f"API 返回错误:{error_message}\n"
f"建议:\n"
f" - 尝试使用其他模型\n"
f" - 稍后重试\n"
f" - 降低分辨率或减少输入图像数量"
)
elif response.status == 502:
raise RuntimeError(
"糟糕!请求到上游时遇到超时或过载!别担心,过会儿再次点击运行即可!"
)
else:
raise RuntimeError(
f"API 请求失败 (状态码: {response.status})\n"
f"API 返回错误:{error_message}"
)
raise RuntimeError(error_text)
# 接收响应体
wait_start = time.time()
-5
View File
@@ -518,9 +518,6 @@ class GeminiAPIClient(BaseAPIClient):
try:
response = await self.request_async(endpoint, request_body, session)
except Exception as e:
request_time = time.time() - request_start
error_first_line = str(e).split('\n')[0]
print(f"{task_prefix} 请求 {size_str} → API {request_time:.1f}s → 失败: {error_first_line}")
raise
request_time = time.time() - request_start
@@ -719,8 +716,6 @@ class GeminiAPIClient(BaseAPIClient):
# 传递完整的错误信息(用于排查问题)
if progress_callback:
progress_callback(completed, batch_size, False, error_msg)
print(f"GeminiClient: 任务 {completed}/{batch_size} 失败 ✗")
# 当前批次完成后,立即清理内存
if batch_images: