From 4cc2002fa65094a6b8ebfdd32d4987686e9efdf8 Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Wed, 10 Dec 2025 22:31:07 +0100 Subject: [PATCH] fix(library-desk): reduce ollama health check to single API call MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Previously called /api/tags twice (once for server check, once for model check). Now reuses response from single call. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .../library-desk/src/clients/ollama_client.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/services/library-desk/src/clients/ollama_client.py b/services/library-desk/src/clients/ollama_client.py index f9f31e5..b5169aa 100644 --- a/services/library-desk/src/clients/ollama_client.py +++ b/services/library-desk/src/clients/ollama_client.py @@ -298,13 +298,22 @@ class OllamaClient: True if healthy, False otherwise """ try: - # Check server is up + # Check server is up and get models in one call response = await self.client.get(self.tags_url, timeout=5.0) response.raise_for_status() + data = response.json() + models = data.get("models", []) # Check model is available - models_available = await self.check_model_available() - if not models_available: + check_model = self.model + model_found = False + for m in models: + name = m.get("name", "") + if name == check_model or name.startswith(f"{check_model}:"): + model_found = True + break + + if not model_found: logger.warning(f"Model '{self.model}' not found in Ollama") return False