ca07b25297
Alinea la funcion al contrato de control de cola (punto 3 del roadmap ComfyUI):
- firma keyword-only: clear_pending (vacia pendientes con POST /queue {clear:true}) + timeout
- output {ok, interrupted, cleared, queue_remaining, error}; GET /queue al final
- no lanza en fallo de red: degrada a {ok:False, error}
- test con mock HTTP local (golden + clear + cola vacia + error path), 4/4 verde
- .md autosuficiente con gotchas + capability growth log
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
4.4 KiB
4.4 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_interrupt_queue | function | py | ml | 1.1.0 | impure | def comfyui_interrupt_queue(*, clear_pending: bool = False, server: str = "127.0.0.1:8188", timeout: float = 10.0) -> dict | Corta la generacion en curso de ComfyUI (POST /interrupt) y, si clear_pending=True, vacia ademas la cola de pendientes (POST /queue {"clear":true}). Consulta GET /queue al final para reportar queue_remaining. Devuelve {ok, interrupted, cleared, queue_remaining, error}. NO lanza excepcion en fallo de red: degrada a {ok: False, error}. /interrupt corta solo el prompt en ejecucion, no vacia los pendientes salvo clear_pending. Impura: HTTP POST + GET, solo stdlib (urllib, json). |
|
false | error_go_core |
|
dict con ok (bool, True si interrupt + clear (si se pidio) + lectura de cola OK), interrupted (bool, True si POST /interrupt respondio), cleared (bool, True si clear_pending y POST /queue {clear:true} respondio; False si no se pidio o fallo), queue_remaining (int, queue_running + queue_pending tras la operacion), error (str, vacio si todo OK). | true |
|
python/functions/ml/tests/test_comfyui_interrupt_queue.py | python/functions/ml/comfyui_interrupt_queue.py |
Ejemplo
import sys, os
sys.path.insert(0, os.path.join(os.environ["HOME"], "fn_registry", "python", "functions"))
from ml.comfyui_interrupt_queue import comfyui_interrupt_queue
# Solo cortar el prompt en ejecucion (los pendientes siguen):
res = comfyui_interrupt_queue()
# {'ok': True, 'interrupted': True, 'cleared': False, 'queue_remaining': 3, 'error': ''}
# Cortar el actual Y vaciar los pendientes de golpe:
res = comfyui_interrupt_queue(clear_pending=True)
# {'ok': True, 'interrupted': True, 'cleared': True, 'queue_remaining': 0, 'error': ''}
if res["ok"]:
print(f"cortado; quedan {res['queue_remaining']} en cola")
O lanzable directo: ./fn run comfyui_interrupt_queue · ./fn run comfyui_interrupt_queue --clear.
Cuando usarla
Para abortar una generacion que se esta tomando demasiado, que tira de mas VRAM de
la prevista, o tras encolar por error un workflow pesado. Con clear_pending=True
es el freno de mano completo: corta el actual y borra todo lo encolado en una sola
llamada (sin tener que encadenar comfyui_queue_manage("clear") despues). Tras la
operacion queue_remaining dice de un vistazo cuanto queda en cola.
Gotchas
/interruptcorta SOLO el prompt en ejecucion; sinclear_pendinglos pendientes (queue_pending) siguen y el siguiente arranca de inmediato. Pasaclear_pending=Truepara vaciar tambien la cola (POST /queue {"clear": true}).- No es idempotente en el sentido de "sin efecto": si hay algo ejecutandose, lo
mata. Si la cola esta vacia, tanto el interrupt como el clear son inocuos
(
interrupted=True/cleared=Trueigual,queue_remaining=0). queue_remainingse lee al FINAL (GET /queue tras interrupt+clear): esqueue_running + queue_pending. Justo tras un interrupt sin clear puede ser >0 porque el siguiente pendiente ya arranco.- En fallo de red NO lanza: devuelve
ok=Falsecon el mensaje enerror. Compruebaokantes de fiarte dequeue_remaining. - Tras el interrupt conviene liberar VRAM con
POST /freesi vas a encolar otro trabajo pesado (esta funcion no lo hace; ver el round-trip build -> submit -> wait). - Para operaciones de cola mas finas (borrar UN prompt por id, contar el historial)
usa
comfyui_queue_manage; esta funcion se centra en el interrupt + clear masivo.
Capability growth log
- v1.1.0 (2026-06-28) — anade flag
clear_pending(vacia la cola en la misma llamada) + paramtimeout; el output pasa a {ok, interrupted, cleared, queue_remaining, error} y se anaden tests (mock HTTP local).