You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 17:34:27