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)