---
name: comfyui_interrupt_queue
kind: function
lang: py
domain: ml
version: "1.0.0"
purity: impure
signature: "def comfyui_interrupt_queue(server: str = \"127.0.0.1:8188\") -> dict"
description: "Corta la generacion en curso de ComfyUI (POST /interrupt) y devuelve el estado de la cola (GET /queue). Devuelve {ok, interrupted, queue_running, queue_pending, error}. NO lanza excepcion en fallo de red: degrada a {ok: False, error}. /interrupt corta solo el prompt en ejecucion, no vacia los pendientes. Impura: HTTP POST + GET, solo stdlib (urllib, json)."
tags: [comfyui, ml, queue, interrupt, control, http]
uses_functions: []
uses_types: []
returns: []
returns_optional: false
error_type: "error_go_core"
imports: []
params:
  - name: server
    desc: "host:port del servidor ComfyUI sin esquema (default '127.0.0.1:8188')."
output: "dict con ok (bool, True si interrupt + lectura de cola OK), interrupted (bool, True si POST /interrupt respondio), queue_running (int, prompts ejecutandose), queue_pending (int, prompts encolados), error (str, vacio si todo OK)."
tested: false
tests: []
test_file_path: ""
file_path: "python/functions/ml/comfyui_interrupt_queue.py"
---

## Ejemplo

```python
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

res = comfyui_interrupt_queue()
# {'ok': True, 'interrupted': True, 'queue_running': 0, 'queue_pending': 0, 'error': ''}
if res["ok"] and res["interrupted"]:
    print(f"cortado; pendientes en cola: {res['queue_pending']}")
```

O lanzable directo con: `./fn run comfyui_interrupt_queue`.

## 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. Tambien para inspeccionar
de un vistazo cuanto queda en cola (`queue_running` / `queue_pending`) sin parsear
el JSON de /queue a mano. Es el freno de mano del round-trip build -> submit -> wait.

## Gotchas

- `/interrupt` corta SOLO el prompt en ejecucion; los pendientes (`queue_pending`)
  siguen y el siguiente arranca de inmediato. Para vaciar la cola entera hay que
  llamar `POST /queue` con `{"clear": true}` (no lo hace esta funcion — solo corta
  + lee).
- No es idempotente en el sentido de "sin efecto": si hay algo ejecutandose, lo
  mata. Si la cola esta vacia, el interrupt es inocuo (interrupted=True igual).
- En fallo de red NO lanza: devuelve `ok=False` con el mensaje en `error`. Comprueba
  `ok` antes de fiarte de los conteos.
- Tras el interrupt conviene liberar VRAM con `POST /free` si vas a encolar otro
  trabajo pesado (esta funcion no lo hace).
