config.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import os
  2. import yaml
  3. from .app_config import AppConfig
  4. from .database_config import DatabaseConfig
  5. from .ai_config import AIConfig
  6. from .ai_fastgpt_config import FastGPTAIConfig
  7. class Config:
  8. """配置管理类"""
  9. _instance = None
  10. _config = None
  11. app = None
  12. database = None
  13. ai = None
  14. fastgpt_ai = None
  15. def __new__(cls):
  16. if cls._instance is None:
  17. cls._instance = super().__new__(cls)
  18. cls.app = AppConfig()
  19. cls.database = DatabaseConfig()
  20. cls.ai = AIConfig()
  21. cls.fastgpt_ai = FastGPTAIConfig()
  22. return cls._instance
  23. @classmethod
  24. def load_config(cls, path=None):
  25. """加载配置文件
  26. Args:
  27. path: 配置文件路径,如果为None则使用默认路径
  28. """
  29. if path is None:
  30. # path = os.environ.get("CONFIG_PATH", os.path.join(os.path.dirname(__file__), "../..", "config.yml"))
  31. path = os.environ.get("CONFIG_PATH","config.yml")
  32. with open(path, 'r', encoding='utf-8') as f:
  33. cls._config = yaml.safe_load(f)
  34. # 初始化应用配置
  35. cls.app.update_config(cls._config.get('app', {}))
  36. # 初始化数据库配置
  37. cls.database.update_config(cls._config.get('db', {}))
  38. # 初始化AI配置
  39. cls.ai.update_config(cls._config.get('ai', {}))
  40. # 初始化FastGPT AI配置
  41. cls.fastgpt_ai.update_config(cls._config.get('fastgpt_ai', {}))
  42. @classmethod
  43. def reload(cls, path=None):
  44. """重新加载配置
  45. Args:
  46. path: 配置文件路径,如果为None则使用默认路径
  47. """
  48. cls._config = None
  49. cls.load_config(path)
  50. # 创建全局配置实例
  51. config = Config()