From 98df4f265515b292bdb61f3a89033f401a093ee6 Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Tue, 3 Oct 2023 12:49:17 -0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20fix(utils.py):=20refactor=20serv?= =?UTF-8?q?ice=20initialization=20to=20improve=20readability=20and=20error?= =?UTF-8?q?=20handling=20=E2=9C=A8=20feat(utils.py):=20add=20session=20ser?= =?UTF-8?q?vice=20factory=20and=20dependencies=20to=20support=20session=20?= =?UTF-8?q?management?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/backend/langflow/services/utils.py | 54 +++++++++++++++----------- 1 file changed, 32 insertions(+), 22 deletions(-) diff --git a/src/backend/langflow/services/utils.py b/src/backend/langflow/services/utils.py index e18b4938d..b85155d8a 100644 --- a/src/backend/langflow/services/utils.py +++ b/src/backend/langflow/services/utils.py @@ -136,30 +136,40 @@ def initialize_services(): from langflow.services.task import factory as task_factory from langflow.services.session import factory as session_service_factory # type: ignore - service_manager.register_factory(settings_factory.SettingsServiceFactory()) - service_manager.register_factory( - auth_factory.AuthServiceFactory(), dependencies=[ServiceType.SETTINGS_SERVICE] - ) - service_manager.register_factory( - database_factory.DatabaseServiceFactory(), - dependencies=[ServiceType.SETTINGS_SERVICE], - ) - service_manager.register_factory( - cache_factory.CacheServiceFactory(), dependencies=[ServiceType.SETTINGS_SERVICE] - ) - service_manager.register_factory(chat_factory.ChatServiceFactory()) + factory_and_dependencies = [ + (settings_factory.SettingsServiceFactory(), []), + ( + auth_factory.AuthServiceFactory(), + [ServiceType.SETTINGS_SERVICE], + ), + ( + database_factory.DatabaseServiceFactory(), + [ServiceType.SETTINGS_SERVICE], + ), + ( + cache_factory.CacheServiceFactory(), + [ServiceType.SETTINGS_SERVICE], + ), + (chat_factory.ChatServiceFactory(), []), + (task_factory.TaskServiceFactory(), []), + ( + session_service_factory.SessionServiceFactory(), + [ServiceType.CACHE_SERVICE], + ), + ] + for factory, dependencies in factory_and_dependencies: + try: + service_manager.register_factory(factory, dependencies=dependencies) + except Exception as exc: + logger.exception(exc) + raise RuntimeError( + "Could not initialize services. Please check your settings." + ) from exc - service_manager.register_factory(task_factory.TaskServiceFactory()) - - service_manager.register_factory( - session_service_factory.SessionServiceFactory(), - dependencies=[ServiceType.CACHE_SERVICE], - ) # Test cache connection service_manager.get(ServiceType.CACHE_SERVICE) - # Test database connection - service_manager.get(ServiceType.DATABASE_SERVICE) # Setup the superuser initialize_database() - session = next(get_session()) - setup_superuser(service_manager.get(ServiceType.SETTINGS_SERVICE), session) + setup_superuser( + service_manager.get(ServiceType.SETTINGS_SERVICE), next(get_session()) + )