From 91ea879e508bbb350a0d4df573668f8cf8c32432 Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Thu, 31 Aug 2023 10:20:40 -0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7=20fix(base.py):=20make=20Service?= =?UTF-8?q?=20class=20inherit=20from=20ABC=20to=20make=20it=20an=20abstrac?= =?UTF-8?q?t=20base=20class=20=E2=9C=A8=20feat(manager.py):=20add=20debug?= =?UTF-8?q?=20log=20messages=20for=20service=20creation=20and=20update=20t?= =?UTF-8?q?o=20improve=20debugging=20=E2=9C=A8=20feat(manager.py):=20add?= =?UTF-8?q?=20teardown=20method=20to=20ServiceManager=20to=20teardown=20al?= =?UTF-8?q?l=20services=20and=20clear=20state=20=E2=9C=A8=20feat(manager.p?= =?UTF-8?q?y):=20add=20teardown=5Fservices=20function=20to=20teardown=20al?= =?UTF-8?q?l=20services=20and=20clear=20state?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/backend/langflow/services/base.py | 8 +++++++- src/backend/langflow/services/manager.py | 21 +++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/backend/langflow/services/base.py b/src/backend/langflow/services/base.py index 6bca6c4e2..aaa966047 100644 --- a/src/backend/langflow/services/base.py +++ b/src/backend/langflow/services/base.py @@ -1,2 +1,8 @@ -class Service: +from abc import ABC + + +class Service(ABC): name: str + + def teardown(self): + pass diff --git a/src/backend/langflow/services/manager.py b/src/backend/langflow/services/manager.py index e9895adab..bfe83fce8 100644 --- a/src/backend/langflow/services/manager.py +++ b/src/backend/langflow/services/manager.py @@ -1,5 +1,6 @@ from langflow.services.schema import ServiceType from typing import TYPE_CHECKING, List, Optional +from langflow.utils.logger import logger if TYPE_CHECKING: from langflow.services.factory import ServiceFactory @@ -42,6 +43,7 @@ class ServiceManager: """ Create a new service given its name, handling dependencies. """ + logger.debug(f"Create service {service_name}") self._validate_service_creation(service_name) # Create dependencies first @@ -74,9 +76,21 @@ class ServiceManager: Update a service by its name. """ if service_name in self.services: + logger.debug(f"Update service {service_name}") self.services.pop(service_name, None) self.get(service_name) + def teardown(self): + """ + Teardown all the services. + """ + for service in self.services.values(): + logger.debug(f"Teardown service {service.name}") + service.teardown() + self.services = {} + self.factories = {} + self.dependencies = {} + service_manager = ServiceManager() @@ -134,3 +148,10 @@ def initialize_session_manager(): session_manager_factory.SessionManagerFactory(), dependencies=[ServiceType.CACHE_MANAGER], ) + + +def teardown_services(): + """ + Teardown all the services. + """ + service_manager.teardown()