ed4090a910
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 2m11s
Introduce a localhost-only LiteLLM service template and expose a protected dashboard health endpoint for operational visibility, while adding cc-connect mobile bridge templates with conservative defaults. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
41 lines
1.2 KiB
Python
41 lines
1.2 KiB
Python
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",
|
|
}
|