Browse Source

handle errors

master
e-maks 4 days ago
parent
commit
286677e5d4
  1. 53
      server.py

53
server.py

@ -159,24 +159,41 @@ def generate_video(prompt): @@ -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")
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
ws.close()
logger.info("✅ Генерация завершена")
try:
ws.connect(ws_url)
logger.info("🔌 WebSocket подключён к ComfyUI")
prompt_id = queue_prompt(prompt)["prompt_id"]
logger.info(f"📤 Prompt отправлен: {prompt_id}")
# Ждём завершения
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("✅ Генерация завершена")
except Exception as e:
try:
ws.close()
except:
pass
raise
# Извлекаем видео
history = get_history(prompt_id)[prompt_id]

Loading…
Cancel
Save