| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- import os
- from pathlib import Path
- import yaml
- from dotenv import load_dotenv
- PROJECT_ROOT = Path(__file__).resolve().parent.parent
- # 加载 .env 文件
- load_dotenv(PROJECT_ROOT / ".env")
- def _get_env(key: str, default=None):
- return os.environ.get(key, default)
- def _load_yaml(filename: str) -> dict:
- filepath = PROJECT_ROOT / "config" / filename
- with open(filepath, encoding="utf-8") as f:
- return yaml.safe_load(f) or {}
- class _Settings:
- def __init__(self):
- self._db_cfg = _load_yaml("database_config.yaml")
- self._model_cfg = _load_yaml("model_config.yaml")
- self._service_cfg = _load_yaml("service_config.yaml")
- @property
- def mysql_host(self) -> str:
- return _get_env("MYSQL_HOST", self._db_cfg.get("mysql", {}).get("host", "localhost"))
- @property
- def mysql_port(self) -> int:
- return int(_get_env("MYSQL_PORT", self._db_cfg.get("mysql", {}).get("port", 3306)))
- @property
- def mysql_user(self) -> str:
- return _get_env("MYSQL_USER", self._db_cfg.get("mysql", {}).get("user", "root"))
- @property
- def mysql_password(self) -> str:
- return _get_env("MYSQL_PASSWORD", self._db_cfg.get("mysql", {}).get("passwd", ""))
- @property
- def mysql_db(self) -> str:
- return _get_env("MYSQL_DB", self._db_cfg.get("mysql", {}).get("db", ""))
- @property
- def redis_host(self) -> str:
- return _get_env("REDIS_HOST", self._db_cfg.get("redis", {}).get("host", "localhost"))
- @property
- def redis_port(self) -> int:
- return int(_get_env("REDIS_PORT", self._db_cfg.get("redis", {}).get("port", 6379)))
- @property
- def redis_password(self) -> str:
- return _get_env("REDIS_PASSWORD", self._db_cfg.get("redis", {}).get("passwd", ""))
- @property
- def redis_db(self) -> int:
- return int(_get_env("REDIS_DB", self._db_cfg.get("redis", {}).get("db", 0)))
- @property
- def log_level(self) -> str:
- return _get_env("LOG_LEVEL", "INFO").upper()
- @property
- def file_upload_url(self) -> str:
- return _get_env("FILE_UPLOAD_URL", self._service_cfg.get("aliyun", {}).get("upload_url", ""))
- @property
- def file_download_url(self) -> str:
- return _get_env("FILE_DOWNLOAD_URL", self._service_cfg.get("aliyun", {}).get("download_url", ""))
- @property
- def model_config(self) -> dict:
- return self._model_cfg
- settings = _Settings()
|