Files
fn_registry/python/functions/ml/comfyui_wait_result.md
T
egutierrez f12272d002 chore: auto-commit (61 archivos)
- docs/capabilities/INDEX.md
- docs/capabilities/comfyui.md
- python/functions/browser/comfyui_export_workflow_ui.md
- python/functions/browser/comfyui_export_workflow_ui.py
- python/functions/browser/comfyui_load_workflow_ui.md
- python/functions/browser/comfyui_load_workflow_ui.py
- python/functions/browser/comfyui_queue_prompt_ui.md
- python/functions/browser/comfyui_queue_prompt_ui.py
- python/functions/browser/comfyui_refresh_nodes_ui.md
- python/functions/browser/comfyui_refresh_nodes_ui.py
- ...

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-24 00:30:30 +02:00

3.3 KiB

name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, params, output, tested, tests, test_file_path, file_path
name kind lang domain version purity signature description tags uses_functions uses_types returns returns_optional error_type imports params output tested tests test_file_path file_path
comfyui_wait_result function py ml 1.0.0 impure def comfyui_wait_result(prompt_id: str, server: str = "127.0.0.1:8188", timeout: float = 180.0, poll_interval: float = 1.0) -> dict Sondea GET /history/{prompt_id} hasta que un prompt ComfyUI completa (status.completed o status_str success/error) o se agota el timeout. Devuelve los outputs por nodo (node_id -> {images: [...]}). Polling como mecanismo principal (no WebSocket). Impura: HTTP GET en bucle + sleep, solo stdlib.
comfyui
ml
image-generation
stable-diffusion
http
polling
false error_go_core
name desc
prompt_id id devuelto por comfyui_submit_workflow (clave 'prompt_id' de su respuesta).
name desc
server host:port del servidor ComfyUI sin esquema (default '127.0.0.1:8188').
name desc
timeout Maximo de segundos a esperar antes de lanzar TimeoutError.
name desc
poll_interval Segundos entre sondeos de /history.
dict de outputs {node_id: {'images': [{'filename', 'subfolder', 'type'}, ...]}} tal como ComfyUI los expone en history[prompt_id]['outputs']. Para un txt2img, el nodo SaveImage ('9') trae el PNG. Puede contener otros tipos (gifs, texto) segun los nodos del workflow. false
python/functions/ml/comfyui_wait_result.py

Ejemplo

import sys, os
sys.path.insert(0, os.path.join(os.environ["HOME"], "fn_registry", "python", "functions"))
from ml.comfyui_build_txt2img_workflow import comfyui_build_txt2img_workflow
from ml.comfyui_submit_workflow import comfyui_submit_workflow
from ml.comfyui_wait_result import comfyui_wait_result

wf = comfyui_build_txt2img_workflow(
    ckpt_name="v1-5-pruned-emaonly-fp16.safetensors",
    positive="a red apple on a wooden table, sharp focus",
)
pid = comfyui_submit_workflow(wf)["prompt_id"]
outputs = comfyui_wait_result(pid, timeout=240)
for node_id, out in outputs.items():
    for img in out.get("images", []):
        print(img["filename"])    # ej. comfy_00001_.png en ~/ComfyUI/output/

O lanzable directo (build + submit + wait) con: ./fn run comfyui_wait_result.

Cuando usarla

Tercer y ultimo paso del round-trip: tras comfyui_submit_workflow, para bloquear hasta que la generacion termine y recuperar las rutas de los PNG generados. Usala cuando quieras el resultado fija (no streaming de progreso paso a paso) — es portable porque solo depende de HTTP, no de websocket-client.

Gotchas

  • Bloquea el hilo (sondea + duerme). Para varias generaciones en paralelo, encola todas con submit y luego espera cada prompt_id, o usa hilos.
  • El timeout por defecto (180s) puede quedarse corto en GPUs lentas o workflows pesados (muchos steps, alta resolucion, upscalers). Sube timeout segun el caso. Lanza TimeoutError si se agota.
  • Lanza RuntimeError si la ejecucion termina con status_str "error" (el detalle del fallo va en el mensaje) o si no se puede conectar al servidor.
  • Devuelve metadatos de los PNG (filename, subfolder, type), NO los bytes de la imagen. Los archivos quedan en la carpeta output/ del servidor; para leerlos desde otra maquina usa GET /view?filename=...&subfolder=...&type=output.