Skip to content

FastAPI 中实现健康检查接口

在 FastAPI 中实现一个简单的健康检查接口非常方便。可以使用 HTTP GET 请求的方式来提供一个健康检查端点,例如 /health,返回状态信息表明服务是否正常工作。

以下是实现健康检查接口的步骤:

1. 创建健康检查接口

python
from fastapi import FastAPI
from pydantic import BaseModel
import socket

app = FastAPI()

class HealthCheckResponse(BaseModel):
    status: str
    host: str
    details: dict

@app.get("/health", response_model=HealthCheckResponse)
async def health_check():
    # 基础的健康状态信息
    health_status = {
        "database": "connected",  # 可以在这里添加数据库的实际连接检测
        "cache": "connected",     # 可以在这里添加缓存服务的实际连接检测
        "uptime": "ok"            # 可以使用其他方法记录应用的运行时间
    }

    # 返回健康检查结果
    return HealthCheckResponse(
        status="Healthy",
        host=socket.gethostname(),
        details=health_status
    )

2. 启动应用

启动 FastAPI 应用后,可以通过 /health 路径访问健康检查接口:

bash
uvicorn main:app --reload

3. 测试接口

打开浏览器或使用工具(如 curl 或 Postman)访问 http://127.0.0.1:8000/health,应该返回如下 JSON 响应:

json
{
    "status": "Healthy",
    "host": "my-server-hostname",
    "details": {
        "database": "connected",
        "cache": "connected",
        "uptime": "ok"
    }
}

4. 扩展健康检查

可以根据需要在 health_status 中增加更多的健康状态检查。例如:

  • 检查数据库是否连接成功。
  • 检查依赖服务(如 Redis、消息队列)是否可用。
  • 添加应用的内存、CPU 使用情况。

这样就可以实现一个功能完善的健康检查接口,方便监控应用的健康状况。

Released under the MIT License.