config.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. from pydantic_settings import BaseSettings, SettingsConfigDict
  2. from typing import List
  3. from dotenv import load_dotenv
  4. import os
  5. load_dotenv()
  6. class Settings(BaseSettings):
  7. # 基础配置
  8. PROJECT_NAME: str = "Alien Cloud Python"
  9. API_V1_STR: str = "/api/v1"
  10. # 鉴权配置 (原 alien-gateway 职责)
  11. SECRET_KEY: str = os.getenv("SECRET_KEY")
  12. ALGORITHM: str = os.getenv("ALGORITHM")
  13. ACCESS_TOKEN_EXPIRE_MINUTES: int = os.getenv("ACCESS_TOKEN_EXPIRE_MINUTES") # 7天
  14. # 数据库配置
  15. DB_USER: str = os.getenv("DB_USER")
  16. DB_PASSWORD: str = os.getenv("DB_PASSWORD")
  17. DB_HOST: str = os.getenv("DB_HOST")
  18. DB_PORT: int = os.getenv("DB_PORT")
  19. DB_NAME: str = os.getenv("DB_NAME")
  20. # redis配置
  21. # REDIS_URL: str = "redis://:Alien123456@172.31.154.180:30002/0"
  22. REDIS_URL: str = os.getenv("REDIS_URL")
  23. # 下游服务地址
  24. STORE_BASE_URL: str = os.getenv("STORE_BASE_URL") # alien_store 服务地址
  25. CONTRACT_BASE_URL: str = os.getenv("CONTRACT_BASE_URL") # alien_contract 服务地址
  26. # 阿里云短信配置
  27. ALIYUN_SMS_SIGN_NAME_CONTRACT: str = os.getenv("ALIYUN_SMS_SIGN_NAME_CONTRACT")
  28. ALIYUN_SMS_TEMPLATE_CODE_CONTRACT: str = os.getenv("ALIYUN_SMS_TEMPLATE_CODE_CONTRACT")
  29. ALIYUN_ACCESS_KEY_ID: str = os.getenv("ALIYUN_ACCESS_KEY_ID")
  30. ALIYUN_ACCESS_KEY_SECRET: str = os.getenv("ALIYUN_ACCESS_KEY_SECRET")
  31. @property
  32. def SQLALCHEMY_DATABASE_URI(self) -> str:
  33. return f"mysql+pymysql://{self.DB_USER}:{self.DB_PASSWORD}@{self.DB_HOST}:{self.DB_PORT}/{self.DB_NAME}"
  34. model_config = SettingsConfigDict(
  35. case_sensitive=True,
  36. env_file=".env.dev",
  37. )
  38. settings = Settings()