handle errors

This commit is contained in:
2026-03-07 21:59:43 +03:00
parent 6fc34aa11b
commit 286677e5d4
+32 -15
View File
@@ -159,24 +159,41 @@ def generate_video(prompt):
ws_url = f"ws://{COMFY_HOST}:{COMFY_PORT}/ws?clientId={ws_client_id}"
ws = ws_client.WebSocket()
ws.connect(ws_url)
logger.info("🔌 WebSocket подключён к ComfyUI")
try:
ws.connect(ws_url)
logger.info("🔌 WebSocket подключён к ComfyUI")
prompt_id = queue_prompt(prompt)["prompt_id"]
logger.info(f"📤 Prompt отправлен: {prompt_id}")
prompt_id = queue_prompt(prompt)["prompt_id"]
logger.info(f"📤 Prompt отправлен: {prompt_id}")
# Ждём завершения
while True:
out = ws.recv()
if isinstance(out, str):
message = json.loads(out)
if message["type"] == "executing":
data = message["data"]
if data["node"] is None and data["prompt_id"] == prompt_id:
break
# Ждём завершения
while True:
try:
out = ws.recv()
except ws_client.WebSocketConnectionClosedException:
# ComfyUI разорвал соединение — проверяем что случилось
logger.error(f"⚠️ ComfyUI закрыл WebSocket для prompt {prompt_id}")
raise RuntimeError(
"ComfyUI connection lost during generation. "
"Possible causes: Out of VRAM, workflow error, or ComfyUI crash. "
"Check ComfyUI logs: journalctl -u comfyui -n 100"
)
if isinstance(out, str):
message = json.loads(out)
if message["type"] == "executing":
data = message["data"]
if data["node"] is None and data["prompt_id"] == prompt_id:
break
ws.close()
logger.info("✅ Генерация завершена")
ws.close()
logger.info("✅ Генерация завершена")
except Exception as e:
try:
ws.close()
except:
pass
raise
# Извлекаем видео
history = get_history(prompt_id)[prompt_id]