From bd6655b0db0174a2a91c0b41fc274e962dc914d3 Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Fri, 1 Sep 2023 17:22:14 -0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20fix(manager.py):=20handle=20None?= =?UTF-8?q?=20service=20in=20teardown=20loop=20to=20prevent=20potential=20?= =?UTF-8?q?errors=20=E2=9C=A8=20feat(manager.py):=20add=20support=20for=20?= =?UTF-8?q?task=20manager=20service=20in=20the=20service=20manager=20initi?= =?UTF-8?q?alization=20process=20=E2=9C=A8=20feat(schema.py):=20add=20task?= =?UTF-8?q?=20manager=20service=20type=20to=20the=20ServiceType=20enum?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/backend/langflow/services/manager.py | 11 +++++++++-- src/backend/langflow/services/schema.py | 1 + 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/backend/langflow/services/manager.py b/src/backend/langflow/services/manager.py index 60e3f3b66..b09bf0999 100644 --- a/src/backend/langflow/services/manager.py +++ b/src/backend/langflow/services/manager.py @@ -1,9 +1,10 @@ from langflow.services.schema import ServiceType -from typing import TYPE_CHECKING, List, Optional +from typing import TYPE_CHECKING, Dict, List, Optional from langflow.utils.logger import logger if TYPE_CHECKING: from langflow.services.factory import ServiceFactory + from langflow.services.base import Service class ServiceManager: @@ -12,7 +13,7 @@ class ServiceManager: """ def __init__(self): - self.services = {} + self.services: Dict[str, "Service"] = {} self.factories = {} self.dependencies = {} @@ -85,6 +86,8 @@ class ServiceManager: Teardown all the services. """ for service in self.services.values(): + if service is None: + continue logger.debug(f"Teardown service {service.name}") service.teardown() self.services = {} @@ -105,6 +108,7 @@ def initialize_services(): from langflow.services.settings import factory as settings_factory from langflow.services.session import factory as session_manager_factory from langflow.services.auth import factory as auth_factory + from langflow.services.task import factory as task_factory service_manager.register_factory(settings_factory.SettingsManagerFactory()) service_manager.register_factory( @@ -124,6 +128,9 @@ def initialize_services(): session_manager_factory.SessionManagerFactory(), dependencies=[ServiceType.CACHE_MANAGER], ) + service_manager.register_factory( + task_factory.TaskManagerFactory(), + ) # Test cache connection service_manager.get(ServiceType.CACHE_MANAGER) diff --git a/src/backend/langflow/services/schema.py b/src/backend/langflow/services/schema.py index 09b76d0a6..801e0cacd 100644 --- a/src/backend/langflow/services/schema.py +++ b/src/backend/langflow/services/schema.py @@ -13,3 +13,4 @@ class ServiceType(str, Enum): DATABASE_MANAGER = "database_manager" CHAT_MANAGER = "chat_manager" SESSION_MANAGER = "session_manager" + TASK_MANAGER = "task_manager"