diff --git a/app/core/__init__.py b/app/core/__init__.py index 4eea5e7..1dd40eb 100644 --- a/app/core/__init__.py +++ b/app/core/__init__.py @@ -4,7 +4,14 @@ Core functionality package from app.core.env_checker import check_environment from app.core.venv_manager import check_virtualenv from app.core.dependency_manager import check_dependencies -from app.core.launcher import AppLauncher + + +def __getattr__(name): + """延迟导入,只在首次使用时才导入模块""" + if name == 'AppLauncher': + from app.core.launcher import AppLauncher + return AppLauncher + raise AttributeError(f"module {__name__!r} has no attribute {name!r}") __all__ = [ 'check_environment', diff --git a/app/core/launcher.py b/app/core/launcher.py index 8503674..34cff02 100644 --- a/app/core/launcher.py +++ b/app/core/launcher.py @@ -7,8 +7,6 @@ from pathlib import Path from app.core.env_checker import check_environment from app.core.venv_manager import check_virtualenv from app.core.dependency_manager import check_dependencies -from app.utils.logger import get_logger -from app.utils.thread_pool_manager import block_main_thread, thread_pool_manager class AppLauncher: @@ -22,6 +20,8 @@ class AppLauncher: project_root: 项目根目录路径 """ self.project_root = project_root + # 延迟导入logger + from app.utils.logger import get_logger self.logger = get_logger() def run(self): @@ -52,6 +52,8 @@ class AppLauncher: def start(): """启动应用服务""" from app.core.rainfall_manager import rainfall_manager + from app.utils.logger import get_logger + from app.utils.thread_pool_manager import block_main_thread, thread_pool_manager logger = get_logger() diff --git a/app/utils/__init__.py b/app/utils/__init__.py index fd4d63e..7be029a 100644 --- a/app/utils/__init__.py +++ b/app/utils/__init__.py @@ -1,7 +1,25 @@ """ Utility functions package """ -from app.utils.db_helper import db_helper, PostgresSQLHelper -from app.utils.thread_pool_manager import thread_pool_manager, ThreadPoolManager, block_main_thread + + +def __getattr__(name): + """延迟导入,只在首次使用时才导入模块""" + if name in ('db_helper', 'PostgresSQLHelper'): + from app.utils.db_helper import db_helper, PostgresSQLHelper + return db_helper if name == 'db_helper' else PostgresSQLHelper + elif name in ('thread_pool_manager', 'ThreadPoolManager', 'block_main_thread'): + from app.utils.thread_pool_manager import ( + thread_pool_manager, + ThreadPoolManager, + block_main_thread + ) + if name == 'thread_pool_manager': + return thread_pool_manager + elif name == 'ThreadPoolManager': + return ThreadPoolManager + else: + return block_main_thread + raise AttributeError(f"module {__name__!r} has no attribute {name!r}") __all__ = ['db_helper', 'PostgresSQLHelper', 'thread_pool_manager', 'ThreadPoolManager', 'block_main_thread']