From 590af9407cdd9c19af4c7f009ed829852e10017b Mon Sep 17 00:00:00 2001 From: Alexander Thiess Date: Thu, 18 Sep 2025 03:57:19 +0200 Subject: [PATCH] check if ollama is online --- src/pages/ollama_manager.py | 14 +++++++++++--- src/utils/ollama.py | 15 +++++++++++++++ 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/pages/ollama_manager.py b/src/pages/ollama_manager.py index 1b2ce80..f9a0e6a 100644 --- a/src/pages/ollama_manager.py +++ b/src/pages/ollama_manager.py @@ -21,16 +21,24 @@ class OllamaManagerPage(AsyncColumn): with self: ui.label('Ollama Manager').classes('text-h4 font-bold') + ollama_status, ollama_version = await ollama.status() + # Status cards with ui.row().classes('w-full gap-4'): with ui.card().classes('flex-grow'): with ui.row().classes('items-center gap-2'): - ui.icon('check_circle').props('color=positive') - ui.label('Ollama Status: Online').classes('font-medium') + if ollama_status: + ui.icon('check_circle').props(f'color=positive') + ui.label('Ollama Status: Online').classes('font-medium') + else: + ui.icon('radio_button_unchecked').props(f'color=negative') + ui.label('Ollama Status: Offline').classes('font-medium') with ui.card().classes('flex-grow'): - ui.label('Version: 0.11.11').classes('font-medium') + ui.label(f'Version: {ollama_version}').classes('font-medium') + if ollama_status is False: + return # Models management with ui.card().classes('w-full'): with ui.row().classes('w-full items-center mb-4'): diff --git a/src/utils/ollama.py b/src/utils/ollama.py index 7c2dfc1..355c388 100644 --- a/src/utils/ollama.py +++ b/src/utils/ollama.py @@ -1,5 +1,20 @@ import httpx from nicegui import ui +from typing import Tuple + + +async def status(url='http://127.0.0.1:11434') -> Tuple[bool, str]: + async with httpx.AsyncClient() as client: + try: + response = await client.get(f"{url}/api/version") + response.raise_for_status() + return True, response.json()["version"] + except httpx.RequestError as exc: + print(exc) + return False, 'Unknown' + except httpx.HTTPStatusError as exc: + print(exc) + return False, 'Unknown' async def available_models(url='http://127.0.0.1:11434'):