-
- Notifications
You must be signed in to change notification settings - Fork 338
Open
Description
Hi! It my first try in dependency injection. I have container of Database with asyncpg.Pool
as resource:
async def create_pool() -> asyncpg.Pool: pool = await asyncpg.create_pool( user="postgres", password="SomePassword", database="postgres" ) return pool class Container(containers.DynamicContainer): pool = providers.Resource(create_pool) db_factory = providers.Factory(Database, pool)
And I have root container:
class Container(containers.DeclarativeContainer): database_container = providers.Container(DbContainer)
Entry point:
def create_app() -> FastAPI: container = Container() container.wire(["__main__"]) db_container = container.database_container app_instance = FastAPI() @app_instance.on_event("startup") async def startup(): await db_container.init_resources() <--- here is error database = db_container.db_factory() await database.create() return app_instance app = create_app() if __name__ == '__main__': os.system("uvicorn main:app --lifespan on")
When I try to run it I get following error:
await db_container.init_resources() TypeError: object NoneType can't be used in 'await' expression
What am I doing wrong? And should I use this structure of containers or is there a better option?
Metadata
Metadata
Assignees
Labels
No labels