FastAPI路由无法检测到Beanie初始化的集合问题求助
FastAPI路由无法检测到Beanie初始化的集合问题求助
我有一个基于Python 3.11的大型应用,不过我把问题简化成了一个小示例,复现了同样的错误。
假设我有一个名为Product的类,它继承自Document:
# /models/product.py from beanie import Document class Product(Document): ... class Settings: name = "mycollection"
在main.py文件中,我初始化了FastAPI应用并设置了lifespan(为了简洁省略了导入部分):
# main.py ... app = FastAPI(lifespan=lifespan) @app.get('/inside_app') def inside_app(product: Product): return 1 app.include_router(product_router) if __name__ == '__main__': uvicorn.run(app)
控制器代码在/controllers/product.py中:
# /controllers/product.py product_router = APIRouter(prefix='/product') @product_router.get('/inside_product') def product(product: Product): return 1
lifespan定义在下面的文件中:
# database_initialization.py async def initialize_database(): client = AsyncIOMotorClient(...) await init_beanie(database=client.get_database("db_name"), document_models=[Product]) @asynccontextmanager async def lifespan(_app: FastAPI): await initialize_database() yield
问题来了:当我用Postman发送GET请求到localhost:8000/inside_app时,一切正常没有错误。但是当我请求localhost:8000/product/inside_product时,却得到了这个错误:
beanie.exception.CollectionWasNotInitialized
这是为什么呢?我还尝试给product_router也添加lifespan,但还是遇到同样的错误...
希望能得到大家的帮助,谢谢!
备注:内容来源于stack exchange,提问作者user28717641
相关产品推荐
相关产品推荐

