32 lines
1.2 KiB
Python
32 lines
1.2 KiB
Python
"""健康检查接口:返回服务状态和浏览器池信息"""
|
|
from fastapi import APIRouter, Depends
|
|
|
|
from app.api.dependencies import get_container, require_bearer_token
|
|
from app.core.container import ServiceContainer
|
|
from app.models.scrape import ApiResponse, HealthData
|
|
|
|
router = APIRouter(tags=["health"])
|
|
|
|
|
|
@router.get("/health", response_model=ApiResponse[HealthData], dependencies=[Depends(require_bearer_token)])
|
|
async def health(container: ServiceContainer = Depends(get_container)) -> ApiResponse[HealthData]:
|
|
"""健康检查接口
|
|
|
|
返回浏览器池状态、Redis 连接状态和当前活跃会话等信息。
|
|
"""
|
|
session = await container.session_store.get_session("www.suruga-ya.jp:search")
|
|
data = HealthData(
|
|
status="ok" if container.browser_pool.ready else "degraded",
|
|
browser_enabled=container.settings.browser_enabled,
|
|
browser_ready=container.browser_pool.ready,
|
|
browser_startup_error=container.browser_pool.startup_error,
|
|
redis_enabled=container.session_store.redis_enabled,
|
|
active_session_id=session.session_id if session else None,
|
|
)
|
|
return ApiResponse[HealthData](
|
|
success=True,
|
|
msg="success",
|
|
data=data,
|
|
code=0,
|
|
)
|