11# SPDX-FileCopyrightText: 2023-2024 MTS PJSC
22# SPDX-License-Identifier: Apache-2.0
3+ from celery import Celery
34from fastapi import FastAPI , HTTPException
45from fastapi .exceptions import RequestValidationError
56from pydantic import ValidationError
2021from syncmaster .exceptions import SyncmasterError
2122
2223
24+ def celery_factory (settings : Settings ) -> Celery :
25+ app = Celery (
26+ __name__ ,
27+ broker = settings .broker .url ,
28+ backend = "db+" + settings .database .sync_url ,
29+ )
30+ return app
31+
32+
2333def application_factory (settings : Settings ) -> FastAPI :
2434 application = FastAPI (
2535 title = "Syncmaster" ,
@@ -30,6 +40,7 @@ def application_factory(settings: Settings) -> FastAPI:
3040 redoc_url = None ,
3141 )
3242 application .state .settings = settings
43+ application .state .celery = celery_factory (settings )
3344 application .include_router (api_router )
3445 application .exception_handler (RequestValidationError )(validation_exception_handler )
3546 application .exception_handler (ValidationError )(validation_exception_handler )
@@ -44,6 +55,7 @@ def application_factory(settings: Settings) -> FastAPI:
4455 {
4556 Settings : lambda : settings ,
4657 UnitOfWork : get_uow (session_factory , settings = settings ),
58+ Celery : lambda : application .state .celery ,
4759 },
4860 )
4961
0 commit comments