From 482e0be438888b8afd1e60dfdb341103fc54bfc1 Mon Sep 17 00:00:00 2001 From: aitbc Date: Mon, 20 Apr 2026 11:11:12 +0200 Subject: [PATCH] refactor: implement lazy loading for coordinator-api service imports Replaced eager imports with lazy loading using __getattr__ to defer service module imports until first access. Added module mapping dictionary and dynamic import logic to reduce initial import overhead while maintaining the same public API. --- .../src/app/services/__init__.py | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/apps/coordinator-api/src/app/services/__init__.py b/apps/coordinator-api/src/app/services/__init__.py index 01d2e419..7b0e0394 100755 --- a/apps/coordinator-api/src/app/services/__init__.py +++ b/apps/coordinator-api/src/app/services/__init__.py @@ -1,8 +1,23 @@ """Service layer for coordinator business logic.""" -from .explorer import ExplorerService -from .jobs import JobService -from .marketplace import MarketplaceService -from .miners import MinerService +from importlib import import_module __all__ = ["JobService", "MinerService", "MarketplaceService", "ExplorerService"] + +_MODULE_BY_EXPORT = { + "ExplorerService": ".explorer", + "JobService": ".jobs", + "MarketplaceService": ".marketplace", + "MinerService": ".miners", +} + + +def __getattr__(name: str): + module_name = _MODULE_BY_EXPORT.get(name) + if module_name is None: + raise AttributeError(f"module {__name__!r} has no attribute {name!r}") + + module = import_module(module_name, __name__) + value = getattr(module, name) + globals()[name] = value + return value