config.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. """
  2. 配置管理
  3. """
  4. import os
  5. from pathlib import Path
  6. from dotenv import load_dotenv
  7. # 加载环境变量
  8. env_path = Path(__file__).parent.parent / '.env'
  9. load_dotenv(dotenv_path=env_path)
  10. class Settings:
  11. """应用配置"""
  12. # 数据库配置
  13. DB_HOST: str = os.getenv("DB_HOST", "localhost")
  14. DB_PORT: int = int(os.getenv("DB_PORT", "3306"))
  15. DB_USER: str = os.getenv("DB_USER", "root")
  16. DB_PASSWORD: str = os.getenv("DB_PASSWORD", "")
  17. DB_NAME: str = os.getenv("DB_NAME", "buff")
  18. # 数据库URL
  19. @property
  20. def DATABASE_URL(self) -> str:
  21. return f"mysql+pymysql://{self.DB_USER}:{self.DB_PASSWORD}@{self.DB_HOST}:{self.DB_PORT}/{self.DB_NAME}?charset=utf8mb4"
  22. # 应用配置
  23. APP_ENV: str = os.getenv("APP_ENV", "development")
  24. DEBUG: bool = os.getenv("DEBUG", "False").lower() == "true"
  25. SECRET_KEY: str = os.getenv("SECRET_KEY", "your-secret-key-change-in-production")
  26. # 加密配置
  27. ENCRYPT_ENABLED: bool = os.getenv("ENCRYPT_ENABLED", "true").lower() == "true"
  28. KEY_ROTATION_DAYS: int = int(os.getenv("KEY_ROTATION_DAYS", "10"))
  29. # 日志配置
  30. LOG_LEVEL: str = os.getenv("LOG_LEVEL", "INFO")
  31. # API配置
  32. API_V1_PREFIX: str = "/api"
  33. ADMIN_PREFIX: str = "/admin"
  34. # Redis配置
  35. REDIS_HOST: str = os.getenv("REDIS_HOST", "47.99.164.66")
  36. REDIS_PORT: int = int(os.getenv("REDIS_PORT", "16379"))
  37. REDIS_DATABASE: int = int(os.getenv("REDIS_DATABASE", "11"))
  38. REDIS_PASSWORD: str = os.getenv("REDIS_PASSWORD", "Hzdyjs@123456")
  39. REDIS_TIMEOUT: int = int(os.getenv("REDIS_TIMEOUT", "30"))
  40. REDIS_SSL_ENABLED: bool = os.getenv("REDIS_SSL_ENABLED", "false").lower() == "true"
  41. # Redis URL
  42. @property
  43. def REDIS_URL(self) -> str:
  44. if self.REDIS_SSL_ENABLED:
  45. return f"rediss://:{self.REDIS_PASSWORD}@{self.REDIS_HOST}:{self.REDIS_PORT}/{self.REDIS_DATABASE}"
  46. else:
  47. return f"redis://:{self.REDIS_PASSWORD}@{self.REDIS_HOST}:{self.REDIS_PORT}/{self.REDIS_DATABASE}"
  48. settings = Settings()