import time import httpx from fastapi import APIRouter from config import LITELLM_URL router = APIRouter() @router.get("/health") async def litellm_health(): timeout = httpx.Timeout(2.0) checks = ("/health", "/v1/models") last_error = None async with httpx.AsyncClient(timeout=timeout) as client: for path in checks: url = f"{LITELLM_URL.rstrip('/')}{path}" started = time.perf_counter() try: response = await client.get(url) latency_ms = round((time.perf_counter() - started) * 1000, 1) if response.is_success: return { "ok": True, "status": "up", "latency_ms": latency_ms, "endpoint": path, "http_status": response.status_code, } last_error = f"{path} returned {response.status_code}" except Exception as exc: last_error = str(exc) return { "ok": False, "status": "down", "latency_ms": None, "endpoint": None, "error": last_error or "health check failed", }