appConfig.py 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  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 algorithmContract.const import *
  9. @dataclass
  10. class DatabaseConfig:
  11. type: str
  12. url: str
  13. timeout: int # Timeout in seconds
  14. poolSize: int
  15. maxPoolSize: int
  16. minPoolSize: int
  17. maxIdleTime: int # Max idle time in seconds
  18. @dataclass
  19. class MinioConfig:
  20. endpoint: str
  21. accessKey: str
  22. secretKey: str
  23. secure: bool
  24. poolSize: int
  25. timeout: int # Timeout in seconds
  26. @dataclass
  27. class LoggingConfig:
  28. logFilePath: str
  29. maxFileSize: int
  30. maxTotalSize: int
  31. backupCount: int
  32. logFormat: str
  33. level: str
  34. @dataclass
  35. class AppConfig:
  36. databaseConfig: dict
  37. minioConfig: MinioConfig
  38. loggingConfig: LoggingConfig
  39. @staticmethod
  40. def loadFromFile(filePath: str):
  41. configJson = JsonUtil.read_json(filePath)
  42. businessFoundationDb = DatabaseConfig(
  43. **configJson['databaseConfig'][DATABASE_BusinessFoundationDb])
  44. businessDb = DatabaseConfig(
  45. **configJson['databaseConfig'][DATABASE_businessDb])
  46. minio = MinioConfig(**configJson['minioConfig'])
  47. logging = LoggingConfig(**configJson['loggingConfig'])
  48. return AppConfig({
  49. "businessFoundationDb": businessFoundationDb,
  50. "businessDb": businessDb
  51. }, minio, logging)
  52. # Example usage
  53. configFilePath = os.environ.get('APP_CONFIG_FILE', r"conf/appConfig.json")
  54. config = AppConfig.loadFromFile(configFilePath)
  55. # config = AppConfig.loadFromFile(r'conf/appConfig.json')
  56. def GetLogger():
  57. return LogUtil(config.loggingConfig.logFilePath, config.loggingConfig.logFormat,
  58. config.loggingConfig.maxTotalSize, config.loggingConfig.backupCount).getLogger()
  59. def GetBusinessFoundationDbUtil():
  60. return DatabaseUtil(url=config.databaseConfig[DATABASE_BusinessFoundationDb].url,
  61. pool_size=config.databaseConfig[DATABASE_BusinessFoundationDb].poolSize,
  62. max_overflow=config.databaseConfig[DATABASE_BusinessFoundationDb].maxPoolSize,
  63. connect_timeout=config.databaseConfig[DATABASE_BusinessFoundationDb].timeout)
  64. def GetBusinessDbUtil():
  65. return DatabaseUtil(url=config.databaseConfig[DATABASE_businessDb].url,
  66. pool_size=config.databaseConfig[DATABASE_businessDb].poolSize,
  67. max_overflow=config.databaseConfig[DATABASE_businessDb].maxPoolSize,
  68. connect_timeout=config.databaseConfig[DATABASE_businessDb].timeout)
  69. def GetDbUtil():
  70. dbInstance = {}
  71. return {
  72. DATABASE_BusinessFoundationDb: DatabaseUtil(url=config.databaseConfig[DATABASE_BusinessFoundationDb].url,
  73. pool_size=config.databaseConfig[DATABASE_BusinessFoundationDb].poolSize,
  74. max_overflow=config.databaseConfig[
  75. DATABASE_BusinessFoundationDb].maxPoolSize,
  76. connect_timeout=config.databaseConfig[DATABASE_BusinessFoundationDb].timeout),
  77. DATABASE_businessDb: DatabaseUtil(url=config.databaseConfig[DATABASE_businessDb].url,
  78. pool_size=config.databaseConfig[DATABASE_businessDb].poolSize,
  79. max_overflow=config.databaseConfig[DATABASE_businessDb].maxPoolSize,
  80. connect_timeout=config.databaseConfig[DATABASE_businessDb].timeout)
  81. }
  82. def GetMinIOUtil():
  83. pool = MinioClientPool(config.minioConfig.endpoint, config.minioConfig.accessKey,
  84. config.minioConfig.secretKey, config.minioConfig.poolSize)
  85. return ThreadSafeMinioClient(pool)