diff --git a/src/fastapi_app/lib/app/app.py b/src/fastapi_app/lib/app/app.py index afb337c..7569152 100644 --- a/src/fastapi_app/lib/app/app.py +++ b/src/fastapi_app/lib/app/app.py @@ -1,5 +1,6 @@ import logging import logging.config as logging_config +from contextlib import asynccontextmanager import fastapi @@ -18,6 +19,13 @@ class Application: self.logger = logging.getLogger(__name__) self.producer = None + @asynccontextmanager + async def lifespan(self, app: fastapi.FastAPI): + self.logger.info("Starting server") + yield + # Clean up the ML models and release the resources + self.logger.info("Shutting down server") + def setup_application(self, app: fastapi.FastAPI) -> fastapi.FastAPI: logger.info("Initializing application") @@ -58,17 +66,10 @@ class Application: docs_url="/api/openapi", openapi_url="/api/openapi.json", default_response_class=fastapi.responses.ORJSONResponse, + lifespan=self.lifespan, ) app = self.setup_application(app) - @app.on_event("startup") - async def startup_event(): - self.logger.info("Starting server") - - @app.on_event("shutdown") - async def shutdown_event(): - self.logger.info("Shutting down server") - app.state.settings = self.settings return app diff --git a/src/fastapi_app/lib/app/settings.py b/src/fastapi_app/lib/app/settings.py index 3004b27..060711b 100644 --- a/src/fastapi_app/lib/app/settings.py +++ b/src/fastapi_app/lib/app/settings.py @@ -21,6 +21,4 @@ class Settings(pydantic_settings.BaseSettings): settings = Settings() # todo Вынести в инициализацию -logging_config.dictConfig( - app_split_settings.get_logging_config(**settings.logger.model_dump()) -) +logging_config.dictConfig(app_split_settings.get_logging_config(**settings.logger.model_dump()))