From c2b43d0c7b1392f941a3d5369c9816386aa951f4 Mon Sep 17 00:00:00 2001 From: e-maks Date: Sun, 8 Mar 2026 12:06:02 +0300 Subject: [PATCH] comfy status monitor --- API-GUIDE.md | 35 +++++++++++++++++++++++++++++++++++ README.md | 3 ++- server.py | 30 ++++++++++++++++++++++++++++++ 3 files changed, 67 insertions(+), 1 deletion(-) diff --git a/API-GUIDE.md b/API-GUIDE.md index ba52c68..0fcfca5 100644 --- a/API-GUIDE.md +++ b/API-GUIDE.md @@ -93,6 +93,41 @@ Health check сервера. **Не требует аутентификации. --- +### `GET /comfyui/status` + +Детальная проверка статуса ComfyUI. **Не требует аутентификации.** + +**Response (ComfyUI доступен):** +```json +{ + "comfyui": "ok", + "ready": true, + "error": null, + "timestamp": 1234567890 +} +``` + +**Response (ComfyUI недоступен):** +```json +{ + "comfyui": "unavailable", + "ready": false, + "error": "Connection failed: Connection refused", + "timestamp": 1234567890 +} +``` + +**Поля:** +- `comfyui` — статус (`ok` / `unavailable`) +- `ready` — готов ли ComfyUI принимать задачи (`true` / `false`) +- `error` — описание ошибки (если есть) +- `timestamp` — текущее время сервера (unix) + +**Использование:** +Проверяй этот endpoint перед отправкой задач, чтобы убедиться что ComfyUI запущен. + +--- + ### `POST /run` Поставить задачу на генерацию видео в очередь. diff --git a/README.md b/README.md index 08c8f6a..928fd1d 100644 --- a/README.md +++ b/README.md @@ -148,7 +148,8 @@ python client.py \ | `/run` | POST | Поставить задачу в очередь → `{"id": "...", "status": "IN_QUEUE"}` | | `/status/` | GET | Получить статус: `IN_QUEUE` / `IN_PROGRESS` / `COMPLETED` / `FAILED` | | `/purge/` | POST | Удалить задачу из памяти (освободить RAM) | -| `/health` | GET | Health check (без авторизации) | +| `/health` | GET | Health check API + ComfyUI (без авторизации) | +| `/comfyui/status` | GET | Детальная проверка ComfyUI (без авторизации) | **Пример потока:** ``` diff --git a/server.py b/server.py index 62fa393..782cc7d 100644 --- a/server.py +++ b/server.py @@ -462,6 +462,36 @@ def health(): }) +@app.route("/comfyui/status", methods=["GET"]) +def comfyui_status(): + """Детальная проверка статуса ComfyUI — без авторизации.""" + result = { + "comfyui": "unavailable", + "ready": False, + "error": None, + "timestamp": int(time.time()) + } + + try: + # Проверка HTTP доступности + url = f"http://{COMFY_HOST}:{COMFY_PORT}/" + response = urllib.request.urlopen(url, timeout=5) + + # Проверка что ComfyUI отвечает корректно + if response.status == 200: + result["comfyui"] = "ok" + result["ready"] = True + else: + result["error"] = f"HTTP {response.status}" + + except urllib.error.URLError as e: + result["error"] = f"Connection failed: {str(e.reason)}" + except Exception as e: + result["error"] = str(e) + + return jsonify(result) + + @app.route("/run", methods=["POST"]) def run_job(): """Отправляет задачу в очередь. Возвращает job_id сразу."""