mirror of
https://github.com/insistence/RuoYi-Vue3-FastAPI.git
synced 2026-10-11 20:05:38 +00:00
* feat: 新增多数据源功能 * perf: 优化多worker下数据源打印重复日志的问题 * perf: 优化代码 * perf: 优化代码 * chore: 固定ai插件相关依赖
93 lines
3.5 KiB
Python
93 lines
3.5 KiB
Python
import os
|
|
from pathlib import Path
|
|
from typing import Any
|
|
|
|
from cli.runtime.base import RuntimeEnvironmentService
|
|
from cli.utils import format_cli_path
|
|
|
|
from .gateway import AppInfrastructureGateway
|
|
|
|
|
|
class AppSnapshotSupport:
|
|
"""
|
|
应用快照支持对象。
|
|
|
|
该对象负责应用配置快照和环境快照的构建,
|
|
避免主运行时服务继续承载快照字段拼装细节。
|
|
|
|
:param infrastructure_gateway: 应用基础设施网关
|
|
:param runtime_environment: 运行时环境服务
|
|
"""
|
|
|
|
def __init__(
|
|
self,
|
|
infrastructure_gateway: AppInfrastructureGateway,
|
|
runtime_environment: RuntimeEnvironmentService,
|
|
) -> None:
|
|
"""
|
|
初始化应用快照支持对象。
|
|
|
|
:param infrastructure_gateway: 应用基础设施网关
|
|
:param runtime_environment: 运行时环境服务
|
|
:return: None
|
|
"""
|
|
self.infrastructure_gateway = infrastructure_gateway
|
|
self.runtime_environment = runtime_environment
|
|
|
|
def build_app_config_snapshot(self) -> dict[str, Any]:
|
|
"""
|
|
读取当前运行环境的应用配置快照。
|
|
|
|
:return: 应用配置快照
|
|
"""
|
|
env_module = self.infrastructure_gateway.get_env_module()
|
|
app_config = env_module.AppConfig
|
|
database_config = env_module.DataBaseConfig.default_source
|
|
log_config = env_module.LogConfig
|
|
redis_config = env_module.RedisConfig
|
|
transport_crypto_config = env_module.TransportCryptoConfig
|
|
return {
|
|
'env': app_config.app_env,
|
|
'name': app_config.app_name,
|
|
'host': app_config.app_host,
|
|
'port': app_config.app_port,
|
|
'rootPath': app_config.app_root_path,
|
|
'reload': app_config.app_reload,
|
|
'workers': app_config.app_workers,
|
|
'disableSwagger': app_config.app_disable_swagger,
|
|
'disableRedoc': app_config.app_disable_redoc,
|
|
'dbType': database_config.db_type,
|
|
'dbHost': database_config.db_host,
|
|
'dbPort': database_config.db_port,
|
|
'dbDatabase': database_config.db_database,
|
|
'redisHost': redis_config.redis_host,
|
|
'redisPort': redis_config.redis_port,
|
|
'logLevel': log_config.loguru_level,
|
|
'transportCryptoEnabled': transport_crypto_config.transport_crypto_enabled,
|
|
'transportCryptoMode': transport_crypto_config.transport_crypto_mode,
|
|
}
|
|
|
|
def build_app_env_snapshot(self) -> dict[str, Any]:
|
|
"""
|
|
读取当前 CLI 进程的环境解析结果快照。
|
|
|
|
:return: 环境解析结果快照
|
|
"""
|
|
env_module = self.infrastructure_gateway.get_env_module()
|
|
app_config = env_module.AppConfig
|
|
backend_dir = Path(self.runtime_environment.get_backend_dir())
|
|
run_env = getattr(getattr(env_module, 'get_config', None), 'run_env', None)
|
|
resolved_env = run_env or os.environ.get('APP_ENV', '') or 'dev'
|
|
env_file_name = f'.env.{resolved_env}'
|
|
env_file_path = backend_dir / env_file_name
|
|
return {
|
|
'cliEnv': resolved_env,
|
|
'configEnv': app_config.app_env,
|
|
'appEnv': os.environ.get('APP_ENV', ''),
|
|
'envFile': env_file_name,
|
|
'envFilePath': format_cli_path(env_file_path),
|
|
'envFileExists': env_file_path.exists(),
|
|
'backendDir': format_cli_path(backend_dir),
|
|
'pythonExecutable': self.runtime_environment.get_python_executable(),
|
|
}
|