From fc897367b633e241b5eba0534cdb0156276234dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Wed, 3 Jun 2026 06:45:36 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20ping-llm=20=D0=B0=D0=B4=D0=B0=D0=BF?= =?UTF-8?q?=D1=82=D0=B8=D0=B2=D0=BD=D1=8B=D0=B9=20=D0=BA=D1=8D=D1=88=20?= =?UTF-8?q?=E2=80=94=2060=D1=81=20=D0=BF=D1=80=D0=B8=20=D1=83=D1=81=D0=BF?= =?UTF-8?q?=D0=B5=D1=85=D0=B5,=207=D1=81=20=D0=BF=D1=80=D0=B8=20=D0=BE?= =?UTF-8?q?=D1=88=D0=B8=D0=B1=D0=BA=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/routes.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/api/routes.py b/api/routes.py index aa5f815..fc5bf90 100644 --- a/api/routes.py +++ b/api/routes.py @@ -195,11 +195,17 @@ def register(app): @app.route("/api/v1/ping-llm", methods=["GET"]) def ping_llm(): - """Быстрая проверка доступности LLM (с кэшем 60с).""" + """Проверка доступности LLM с адаптивным кэшем. + + - Успех → кэш 60с (нет смысла переспрашивать) + - Ошибка → кэш 7с (возможно LLM уже ожил) + """ global _ping_llm_cache now = time.time() - if _ping_llm_cache and (now - _ping_llm_cache.get("ts", 0)) < 60: - return jsonify(_ping_llm_cache["data"]) + if _ping_llm_cache: + ttl = _ping_llm_cache.get("ttl", 7) + if (now - _ping_llm_cache.get("ts", 0)) < ttl: + return jsonify(_ping_llm_cache["data"]) cfg = load() api_key = cfg["llm"]["api_key"] @@ -220,7 +226,8 @@ def register(app): ms = int((time.time() - t0) * 1000) result = {"ok": False, "ms": ms, "error": "LLM unavailable"} - _ping_llm_cache = {"ts": now, "data": result} + ttl = 60 if result.get("ok") else 7 + _ping_llm_cache = {"ts": now, "data": result, "ttl": ttl} return jsonify(result)