FastAPI中on_event弃用警告未解决求助:更换代码仍触发警告
解决FastAPI + Tortoise-ORM的
on_event弃用警告 问题根源
警告并非来自你手写的@app.on_event代码,而是Tortoise-ORM的fastapi contrib模块内部(tortoise/contrib/fastapi/__init__.py)仍在使用已被FastAPI弃用的on_event方法。即使你替换了自己的启动事件,只要之前用了register_tortoise函数,就会触发内部的警告。
解决方法:改用FastAPI Lifespan上下文管理器
完全弃用register_tortoise和@app.on_event,用FastAPI官方推荐的Lifespan机制处理Tortoise的初始化与销毁:
- 导入所需模块
from fastapi import FastAPI from tortoise import Tortoise from contextlib import asynccontextmanager
- 定义Lifespan上下文
# 替换原有的register_tortoise和@app.on_event @asynccontextmanager async def lifespan(app: FastAPI): # 启动逻辑:初始化ORM并生成表结构 await Tortoise.init(config=TORTOISE_ORM) await Tortoise.generate_schemas() yield # 应用运行期间保持连接 # 关闭逻辑:断开所有数据库连接 await Tortoise.close_connections()
- 创建FastAPI实例时绑定Lifespan
app = FastAPI(lifespan=lifespan)
注意事项
- 务必删除所有
register_tortoise调用,否则仍会触发内部警告 - 此方式完全遵循FastAPI 0.100+版本的官方规范,彻底消除弃用警告
内容的提问来源于stack exchange,提问作者gorba
相关产品推荐
相关产品推荐

