Вот упрощенная версия моего настройка:
У меня есть класс репозитория, который зависит от экземпляра базы данных MongoDB, введенного следующим образом:
Код: Выделить всё
class Repository:
def __init__(self, db: Database):
self.collection = db['my_collection']
# other initialization
def init_my_repository(db=Depends(get_mongo_database_instance)):
return Repository(db)
Код: Выделить всё
from fastapi import FastAPI, Depends
from contextlib import asynccontextmanager
@asynccontextmanager
async def lifespan(app: FastAPI,
repo=Depends(init_my_repository),
xxx=Depends(init_my_XXX),
yyy=Depends(init_my_YYY)):
repo.do_something()
xxx.do_something()
yyy.do_something()
yield
Это ограничение вынуждает меня вручную создавать экземпляры этих зависимостей, что противоречит цели использования автоматического внедрения зависимостей FastAPI....!!
Я нашел здесь обсуждение, в котором предлагается обходной путь, но он не работает в моем кодовой базы.
Учитывая, насколько распространен этот сценарий в других платформах на основе IoC, я удивлен, что в FastAPI нет простого решения.
Пожалуйста, помогите. Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/789 ... rtup-event
Мобильная версия