config.py 1.12 KB
import os
from pathlib import Path
from logging import getLogger

from aabd.base.cfg_loader import load_yaml_by_file_with_env
from aabd.base.enhance_dict import EnhanceDict, read_prefixed_env_vars

logger = getLogger(__name__)
cfg_dir = Path(__file__).parent.absolute() / 'cfg'

# 加载基础配置
base_config = load_yaml_by_file_with_env((cfg_dir / 'config.yaml').as_posix())

# 根据 ENV 环境变量加载环境特定配置并合并(如 config.dev.yaml / config.prod.yaml)
env = os.getenv('ENV', 'dev')
env_file = cfg_dir / f'config.{env}.yaml'
if env_file.exists():
    env_config = load_yaml_by_file_with_env(env_file.as_posix())
    if isinstance(base_config, dict) and isinstance(env_config, dict):
        for key, value in env_config.items():
            if key in base_config and isinstance(base_config[key], dict) and isinstance(value, dict):
                base_config[key].update(value)
            else:
                base_config[key] = value
    logger.info(f"已加载环境配置: {env_file.name}")

settings = EnhanceDict(base_config)
settings.update(read_prefixed_env_vars('FRM_'))

logger.info(f'Settings: {settings}')