背景
- 今天启动fastapi时发现了告警,在 FastAPI 中,
on_event 方法已被弃用,官方推荐使用 生命周期事件处理器(lifespan event handlers) 来替代。这是 FastAPI 为了更好地支持异步上下文管理和更灵活的生命周期控制而做出的调整。
- 虽然不知道替换成新写法后性能提升了多少,但我还是按照官方建议进行了修正。希望不会带来副作用。
优化之前
@app.on_event("startup")
async def startup():
await database.connect()
@app.on_event("shutdown")
async def shutdown():
await database.disconnect()
优化之后
from fastapi import FastAPI
from contextlib import asynccontextmanager
@asynccontextmanager
async def lifespan(app: FastAPI):
await database.connect()
print("数据库已连接")
yield
await database.disconnect()
print("数据库已断开连接")
app = FastAPI(lifespan=lifespan)
@app.get("/")
async def root():
return {"message": "Hello World"}