myYouTube/backend/app/api/health.py

43 lines
962 B
Python
Raw Normal View History

import logging
import httpx
from fastapi import APIRouter, Depends
from sqlalchemy import text
from sqlalchemy.orm import Session
from app.config import settings
from app.db import get_db
logger = logging.getLogger(__name__)
router = APIRouter()
def _check_database(db: Session) -> str:
try:
db.execute(text("SELECT 1"))
return "ok"
except Exception:
logger.exception("Database healthcheck failed")
return "error"
def _check_metube() -> str:
try:
response = httpx.get(settings.metube_api_base_url, timeout=5)
if response.status_code < 500:
return "ok"
return "error"
except Exception:
logger.warning("MeTube healthcheck failed", exc_info=True)
return "error"
@router.get("/health")
def health(db: Session = Depends(get_db)) -> dict:
return {
"status": "ok",
"database": _check_database(db),
"metube": _check_metube(),
}