1- from typing import Awaitable , Callable
1+ from typing import Awaitable , Callable , Union
22
33from fastapi import FastAPI , Request
44from starlette .requests import HTTPConnection
88
99def startup_event_generator (
1010 broker : AsyncBroker ,
11- app_path : str ,
11+ app_or_path : Union [ str , FastAPI ] ,
1212) -> Callable [[TaskiqState ], Awaitable [None ]]:
1313 """
1414 Generate shutdown event.
@@ -24,12 +24,16 @@ def startup_event_generator(
2424 async def startup (state : TaskiqState ) -> None :
2525 if not broker .is_worker_process :
2626 return
27- app = import_object (app_path )
27+ if isinstance (app_or_path , str ):
28+ app = import_object (app_or_path )
29+ else :
30+ app = app_or_path
31+
2832 if not isinstance (app , FastAPI ):
2933 app = app ()
3034
3135 if not isinstance (app , FastAPI ):
32- raise ValueError (f"'{ app_path } ' is not a FastAPI application." )
36+ raise ValueError (f"'{ app_or_path } ' is not a FastAPI application." )
3337
3438 state .fastapi_app = app
3539 await app .router .startup ()
@@ -62,7 +66,7 @@ async def shutdown(state: TaskiqState) -> None:
6266 return shutdown
6367
6468
65- def init (broker : AsyncBroker , app_path : str ) -> None :
69+ def init (broker : AsyncBroker , app_or_path : Union [ str , FastAPI ] ) -> None :
6670 """
6771 Add taskiq startup events.
6872
@@ -78,7 +82,7 @@ def init(broker: AsyncBroker, app_path: str) -> None:
7882 """
7983 broker .add_event_handler (
8084 TaskiqEvents .WORKER_STARTUP ,
81- startup_event_generator (broker , app_path ),
85+ startup_event_generator (broker , app_or_path ),
8286 )
8387
8488 broker .add_event_handler (
0 commit comments