appConfig.py 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. import os
  2. from utils.jsonUtil import JsonUtil
  3. from dataclasses import dataclass
  4. from utils.logUtil import LogUtil
  5. from utils.rdbmsUtil.databaseUtil import DatabaseUtil
  6. from utils.minioUtil.minioClientPool import MinioClientPool
  7. from utils.minioUtil.threadSafeMinioClient import ThreadSafeMinioClient
  8. from utils.config_loader import ConfigLoader
  9. from algorithmContract.const import *
  10. import logging
  11. def GetLogger():
  12. """返回配置好的日志器"""
  13. logging.basicConfig(
  14. level=logging.INFO,
  15. format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
  16. handlers=[
  17. logging.FileHandler('log/app.log'),
  18. logging.StreamHandler()
  19. ]
  20. )
  21. return logging.getLogger(__name__)
  22. @dataclass
  23. class DatabaseConfig:
  24. type: str
  25. url: str
  26. timeout: int # Timeout in seconds
  27. poolSize: int
  28. maxPoolSize: int
  29. minPoolSize: int
  30. maxIdleTime: int # Max idle time in seconds
  31. @dataclass
  32. class MinioConfig:
  33. endpoint: str
  34. accessKey: str
  35. secretKey: str
  36. secure: bool
  37. poolSize: int
  38. timeout: int # Timeout in seconds
  39. @dataclass
  40. class LoggingConfig:
  41. logFilePath: str
  42. maxFileSize: int
  43. maxTotalSize: int
  44. backupCount: int
  45. logFormat: str
  46. level: str
  47. @dataclass
  48. class AppConfig:
  49. databaseConfig: dict
  50. minioConfig: MinioConfig
  51. loggingConfig: LoggingConfig
  52. @staticmethod
  53. def loadFromFile(filePath: str):
  54. configJson = JsonUtil.read_json(filePath)
  55. businessFoundationDb = DatabaseConfig(
  56. **configJson['databaseConfig'][DATABASE_BusinessFoundationDb])
  57. businessDb = DatabaseConfig(
  58. **configJson['databaseConfig'][DATABASE_businessDb])
  59. minio = MinioConfig(**configJson['minioConfig'])
  60. logging = LoggingConfig(**configJson['loggingConfig'])
  61. return AppConfig({
  62. "businessFoundationDb": businessFoundationDb,
  63. "businessDb": businessDb
  64. }, minio, logging)
  65. # Example usage
  66. configFilePath = os.environ.get('APP_CONFIG_FILE', r"conf/appConfig.json")
  67. config = AppConfig.loadFromFile(configFilePath)
  68. # config = AppConfig.loadFromFile(r'conf/appConfig.json')
  69. def GetLogger():
  70. return LogUtil(config.loggingConfig.logFilePath, config.loggingConfig.logFormat,
  71. config.loggingConfig.maxTotalSize, config.loggingConfig.backupCount).getLogger()
  72. def GetBusinessFoundationDbUtil():
  73. return DatabaseUtil(url=config.databaseConfig[DATABASE_BusinessFoundationDb].url,
  74. pool_size=config.databaseConfig[DATABASE_BusinessFoundationDb].poolSize,
  75. max_overflow=config.databaseConfig[DATABASE_BusinessFoundationDb].maxPoolSize,
  76. connect_timeout=config.databaseConfig[DATABASE_BusinessFoundationDb].timeout)
  77. def GetBusinessDbUtil():
  78. return DatabaseUtil(url=config.databaseConfig[DATABASE_businessDb].url,
  79. pool_size=config.databaseConfig[DATABASE_businessDb].poolSize,
  80. max_overflow=config.databaseConfig[DATABASE_businessDb].maxPoolSize,
  81. connect_timeout=config.databaseConfig[DATABASE_businessDb].timeout)
  82. def GetDbUtil():
  83. dbInstance = {}
  84. return {
  85. DATABASE_BusinessFoundationDb: DatabaseUtil(url=config.databaseConfig[DATABASE_BusinessFoundationDb].url,
  86. pool_size=config.databaseConfig[DATABASE_BusinessFoundationDb].poolSize,
  87. max_overflow=config.databaseConfig[
  88. DATABASE_BusinessFoundationDb].maxPoolSize,
  89. connect_timeout=config.databaseConfig[DATABASE_BusinessFoundationDb].timeout),
  90. DATABASE_businessDb: DatabaseUtil(url=config.databaseConfig[DATABASE_businessDb].url,
  91. pool_size=config.databaseConfig[DATABASE_businessDb].poolSize,
  92. max_overflow=config.databaseConfig[DATABASE_businessDb].maxPoolSize,
  93. connect_timeout=config.databaseConfig[DATABASE_businessDb].timeout)
  94. }
  95. def GetMinIOUtil():
  96. pool = MinioClientPool(config.minioConfig.endpoint, config.minioConfig.accessKey,
  97. config.minioConfig.secretKey, config.minioConfig.poolSize)
  98. return ThreadSafeMinioClient(pool)