from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.orm import Session from app.core.database import get_db from app.core.config import settings import redis import time router = APIRouter() @router.get("/health") async def health_check(): """基础健康检查""" return { "success": True, "data": { "status": "healthy", "service": "cloud-drive-api", "environment": settings.ENVIRONMENT, "timestamp": int(time.time()) }, "message": "API服务运行正常" } @router.get("/ready") async def readiness_check(db: Session = Depends(get_db)): """就绪检查 - 检查数据库和Redis连接""" checks = {} # 检查数据库连接 try: db.execute("SELECT 1") checks["database"] = { "status": "healthy", "message": "数据库连接正常" } except Exception as e: checks["database"] = { "status": "unhealthy", "message": f"数据库连接失败: {str(e)}" } raise HTTPException(status_code=503, detail="数据库连接失败") # 检查Redis连接 try: r = redis.from_url(settings.REDIS_URL) r.ping() checks["redis"] = { "status": "healthy", "message": "Redis连接正常" } except Exception as e: checks["redis"] = { "status": "unhealthy", "message": f"Redis连接失败: {str(e)}" } raise HTTPException(status_code=503, detail="Redis连接失败") # 检查文件存储 try: import os os.makedirs(settings.UPLOAD_DIR, exist_ok=True) checks["storage"] = { "status": "healthy", "message": "文件存储正常" } except Exception as e: checks["storage"] = { "status": "unhealthy", "message": f"文件存储失败: {str(e)}" } raise HTTPException(status_code=503, detail="文件存储失败") return { "success": True, "data": { "status": "ready", "checks": checks, "timestamp": int(time.time()) }, "message": "所有服务已就绪" }