app_settings.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. from typing import List, Optional, Any
  2. from pydantic_settings import BaseSettings, SettingsConfigDict
  3. class AppSettings(BaseSettings):
  4. """
  5. 应用配置
  6. """
  7. model_config = SettingsConfigDict(env_prefix='app_', extra='ignore')
  8. # 应用运行环境
  9. env: Optional[str] = None
  10. # 应用名称
  11. name: Optional[str] = None
  12. # 应用代理路径
  13. root_path: Optional[str] = None
  14. # 应用主机
  15. host: Optional[str] = None
  16. # 应用端口
  17. port: Optional[int] = None
  18. # 应用版本
  19. version: Optional[str] = None
  20. # 应用是否允许跨域
  21. origins: Optional[List[str]] = None
  22. # 应用是否开启热重载
  23. reload: Optional[bool] = None
  24. # 应用是否开启IP归属区域查询
  25. ip_location_query: Optional[bool] = None
  26. # 应用是否允许账号同时登录
  27. same_time_login: Optional[bool] = None
  28. def __getattr__(self, name: str) -> Any:
  29. """
  30. 忽略大小写获取属性
  31. """
  32. for key in self.__dict__:
  33. if key.lower() == name.lower():
  34. return self.__dict__[key]
  35. raise AttributeError(f"'AppSettings' object has no attribute '{name}'")