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 使用情况。
这样就可以实现一个功能完善的健康检查接口,方便监控应用的健康状况。