| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- """
- 配置管理
- """
- import os
- from pathlib import Path
- from dotenv import load_dotenv
- # 加载环境变量
- env_path = Path(__file__).parent.parent / '.env'
- load_dotenv(dotenv_path=env_path)
- class Settings:
- """应用配置"""
-
- # 数据库配置
- DB_HOST: str = os.getenv("DB_HOST", "localhost")
- DB_PORT: int = int(os.getenv("DB_PORT", "3306"))
- DB_USER: str = os.getenv("DB_USER", "root")
- DB_PASSWORD: str = os.getenv("DB_PASSWORD", "")
- DB_NAME: str = os.getenv("DB_NAME", "buff")
-
- # 数据库URL
- @property
- def DATABASE_URL(self) -> str:
- return f"mysql+pymysql://{self.DB_USER}:{self.DB_PASSWORD}@{self.DB_HOST}:{self.DB_PORT}/{self.DB_NAME}?charset=utf8mb4"
-
- # 应用配置
- APP_ENV: str = os.getenv("APP_ENV", "development")
- DEBUG: bool = os.getenv("DEBUG", "False").lower() == "true"
- SECRET_KEY: str = os.getenv("SECRET_KEY", "your-secret-key-change-in-production")
-
- # 加密配置
- ENCRYPT_ENABLED: bool = os.getenv("ENCRYPT_ENABLED", "true").lower() == "true"
- KEY_ROTATION_DAYS: int = int(os.getenv("KEY_ROTATION_DAYS", "10"))
-
- # 日志配置
- LOG_LEVEL: str = os.getenv("LOG_LEVEL", "INFO")
-
- # API配置
- API_V1_PREFIX: str = "/api"
- ADMIN_PREFIX: str = "/admin"
- # Redis配置
- REDIS_HOST: str = os.getenv("REDIS_HOST", "47.99.164.66")
- REDIS_PORT: int = int(os.getenv("REDIS_PORT", "16379"))
- REDIS_DATABASE: int = int(os.getenv("REDIS_DATABASE", "11"))
- REDIS_PASSWORD: str = os.getenv("REDIS_PASSWORD", "Hzdyjs@123456")
- REDIS_TIMEOUT: int = int(os.getenv("REDIS_TIMEOUT", "30"))
- REDIS_SSL_ENABLED: bool = os.getenv("REDIS_SSL_ENABLED", "false").lower() == "true"
- # Redis URL
- @property
- def REDIS_URL(self) -> str:
- if self.REDIS_SSL_ENABLED:
- return f"rediss://:{self.REDIS_PASSWORD}@{self.REDIS_HOST}:{self.REDIS_PORT}/{self.REDIS_DATABASE}"
- else:
- return f"redis://:{self.REDIS_PASSWORD}@{self.REDIS_HOST}:{self.REDIS_PORT}/{self.REDIS_DATABASE}"
- settings = Settings()
|