15.7 健康检查与就绪检查
FastAPI健康检查与就绪检查:Python初学者入门教程
本教程面向有Python基础的初学者,无Web开发经验,通过生活化类比和动手实践,快速学习在FastAPI中实现健康检查与就绪检查,包含简单示例和成功时刻,帮助建立信心。
FastAPI健康检查与就绪检查入门教程
引言
想象一下,你有一个在线商店应用。你需要确保应用一直正常运行(健康检查),同时当有新订单时,应用需要准备好处理请求,比如检查库存是否充足(就绪检查)。这就是健康检查和就绪检查在Web开发中的作用!
在这个教程中,作为Python初学者,你将学习如何使用FastAPI快速创建这些检查,并看到立即的成功结果。无Web开发经验也没关系,我们会一步步来。
什么是健康检查和就绪检查?
- 健康检查:检查应用程序是否正在运行。这就像医生检查你的心跳——如果心跳正常,你就健康。在FastAPI中,我们创建一个端点,返回"健康"状态。
- 就绪检查:检查应用程序是否准备好处理请求。这就像检查厨房是否备齐了食材——如果一切就绪,你就可以开始做饭了。在FastAPI中,这通常涉及检查数据库连接或外部服务是否可用。
生活化类比:
- 健康检查:汽车引擎是否启动?
- 就绪检查:汽车油箱是否满,轮胎是否充气?
环境设置:启动你的第一个FastAPI应用
首先,确保你安装了Python(建议Python 3.7+)。然后,打开终端或命令提示符,安装FastAPI和Uvicorn(一个服务器):
pip install fastapi uvicorn
成功时刻:当安装完成无错误时,你已经准备好了!
第一步:创建基础FastAPI应用
让我们创建一个简单的应用来熟悉FastAPI。创建一个新文件 main.py:
from fastapi import FastAPI
app = FastAPI() # 创建一个FastAPI实例
@app.get("/") # 定义一个GET请求的端点
def read_root():
return {"Hello": "World"} # 返回一个简单的JSON响应
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000) # 运行服务器
保存文件,然后在终端运行:
python main.py
成功时刻:看到类似 "Uvicorn running on http://0.0.0.0:8000" 的消息。现在,打开浏览器访问 http://localhost:8000/,你会看到 {"Hello": "World"}。太棒了!你的第一个FastAPI应用运行起来了。
第二步:实现健康检查端点
健康检查很简单:我们添加一个端点来返回应用状态。修改 main.py:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/health") # 添加健康检查端点
def health_check():
return {"status": "healthy"} # 直接返回健康状态
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000)
重新运行应用(如果已运行,按Ctrl+C停止,然后重新运行 python main.py)。
成功时刻:访问 http://localhost:8000/health,你会看到 {"status": "healthy"}。这意味着你的应用正在健康运行!
第三步:实现就绪检查端点
就绪检查可以更复杂,但我们会从一个简单的模拟开始。想象应用需要数据库连接来工作。我们用一个变量来模拟数据库状态。修改 main.py:
from fastapi import FastAPI, HTTPException # 导入HTTPException用于错误响应
app = FastAPI()
# 模拟数据库连接状态
database_ready = True # 初始设置为就绪
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/health")
def health_check():
return {"status": "healthy"}
@app.get("/ready") # 添加就绪检查端点
def readiness_check():
if database_ready:
return {"status": "ready"} # 如果数据库就绪,返回成功
else:
# 如果未就绪,返回错误
raise HTTPException(status_code=503, detail="Database not ready")
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000)
运行应用。
成功时刻:访问 http://localhost:8000/ready,你会看到 {"status": "ready"}。现在,改变代码,将 database_ready = False,然后重新运行应用,再次访问同一地址,你会看到一个错误页面,显示 "Database not ready"。这模拟了就绪检查失败的情况!
测试你的应用
为了全面测试,确保运行应用后测试所有端点:
http://localhost:8000/:首页,应返回{"Hello": "World"}http://localhost:8000/health:健康检查,应返回{"status": "healthy"}http://localhost:8000/ready:就绪检查,根据database_ready值变化响应
你可以使用浏览器,或者终端工具如 curl(例如,curl http://localhost:8000/health)。
总结和下一步
恭喜!你已经学会了在FastAPI中实现健康检查和就绪检查的基本方法。这为你部署和监控Web应用打下了基础。
回顾关键点:
- 健康检查:确保应用在运行,类似心跳检测。
- 就绪检查:确保应用准备好处理请求,类似检查食材是否备齐。
- 使用
@app.get()来定义端点,并通过返回JSON或抛出异常来控制响应。
扩展想法:在实际项目中,你可以将就绪检查替换为真实的数据库查询或API调用,以动态检查依赖状态。
生活化类比:
- 健康检查:电话是否开机?
- 就绪检查:电话是否有信号,电量是否充足?
保持实践,尝试修改代码,比如添加更多端点或模拟不同场景。你已经迈出了Web开发的第一步,继续前进!