Skip to content

Commit 49f38d4

Browse files
authored
Merge pull request #15 from taskiq-python/feature/pass-app
Added support for passing the FastaAPI instance.
2 parents 9a43328 + 541da2d commit 49f38d4

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

taskiq_fastapi/initializator.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import Awaitable, Callable
1+
from typing import Awaitable, Callable, Union
22

33
from fastapi import FastAPI, Request
44
from starlette.requests import HTTPConnection
@@ -8,7 +8,7 @@
88

99
def 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

Comments
 (0)