From 37f3bce19404d7900f36a938d2d1026ea43416b3 Mon Sep 17 00:00:00 2001 From: jsdio Date: Wed, 27 Sep 2023 17:24:06 +0300 Subject: [PATCH] =?UTF-8?q?=D0=97=D0=B0=D0=BF=D1=83=D1=81=D0=BA=20=D1=87?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=B7=20lifespan?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/fastapi_app/lib/app/app.py | 17 +++++++++-------- src/fastapi_app/lib/app/settings.py | 4 +--- 2 files changed, 10 insertions(+), 11 deletions(-) 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()))