|
|
@@ -0,0 +1,77 @@
|
|
|
+import os
|
|
|
+from pathlib import Path
|
|
|
+import yaml
|
|
|
+
|
|
|
+PROJECT_ROOT = Path(__file__).resolve().parent.parent
|
|
|
+
|
|
|
+
|
|
|
+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()
|