初次提交
This commit is contained in:
81
backend/app/api/v1/endpoints/health.py
Normal file
81
backend/app/api/v1/endpoints/health.py
Normal file
@@ -0,0 +1,81 @@
|
||||
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": "所有服务已就绪"
|
||||
}
|
||||
Reference in New Issue
Block a user