Add service health checks and dynamic Apps page
Backend polls each registered service's /health endpoint every 30 s via a background asyncio task. GET /api/services exposes the live status snapshot. The Apps page now renders from this endpoint — showing "Unavailable" (dimmed, non-clickable) when a service is registered but its container is unreachable. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
"""
|
||||
GET /api/services — returns health status for all registered feature services.
|
||||
Available to any authenticated user so the frontend can drive app visibility.
|
||||
"""
|
||||
from fastapi import APIRouter, Depends
|
||||
|
||||
from app.deps import get_current_user
|
||||
from app.models.user import User
|
||||
from app.services.service_health import get_all_statuses
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
@router.get("")
|
||||
async def list_services(_: User = Depends(get_current_user)) -> list[dict]:
|
||||
"""
|
||||
Returns each registered service with its current health status.
|
||||
|
||||
healthy=true → service responded 200 on its last /health poll
|
||||
healthy=false → unreachable, timed out, or not yet polled
|
||||
"""
|
||||
return get_all_statuses()
|
||||
Reference in New Issue
Block a user