You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.3 KiB
Python
55 lines
1.3 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""
|
|
健康检查路由
|
|
提供服务状态检查端点
|
|
"""
|
|
|
|
from fastapi import APIRouter, Request
|
|
|
|
from api.schemas.response import HealthResponse
|
|
|
|
router = APIRouter(prefix="/health", tags=["健康检查"])
|
|
|
|
# API 版本
|
|
API_VERSION = "1.0.0"
|
|
|
|
|
|
@router.get(
|
|
"",
|
|
response_model=HealthResponse,
|
|
summary="健康检查",
|
|
description="检查服务是否正常运行",
|
|
)
|
|
async def health_check(request: Request) -> HealthResponse:
|
|
"""
|
|
基础健康检查
|
|
返回服务状态和模型加载状态
|
|
"""
|
|
model_loaded = getattr(request.app.state, "model_loaded", False)
|
|
|
|
return HealthResponse(
|
|
status="healthy" if model_loaded else "unhealthy",
|
|
model_loaded=model_loaded,
|
|
version=API_VERSION,
|
|
)
|
|
|
|
|
|
@router.get(
|
|
"/ready",
|
|
response_model=HealthResponse,
|
|
summary="就绪检查",
|
|
description="检查服务是否已准备好处理请求 (模型已加载)",
|
|
)
|
|
async def readiness_check(request: Request) -> HealthResponse:
|
|
"""
|
|
就绪检查
|
|
只有当模型加载完成后才返回 healthy
|
|
"""
|
|
model_loaded = getattr(request.app.state, "model_loaded", False)
|
|
|
|
return HealthResponse(
|
|
status="healthy" if model_loaded else "unhealthy",
|
|
model_loaded=model_loaded,
|
|
version=API_VERSION,
|
|
)
|