config.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. import os
  2. import platform
  3. def get_environment():
  4. """
  5. 获取当前运行环境
  6. 优先级:
  7. 1. 环境变量 FLASK_ENV
  8. 2. 根据操作系统自动判断(Windows -> development, Linux -> production)
  9. """
  10. # 首先检查环境变量
  11. env = os.environ.get('FLASK_ENV')
  12. if env:
  13. return env.lower()
  14. # 根据操作系统判断
  15. system = platform.system().lower()
  16. if system == 'windows':
  17. return 'development'
  18. elif system == 'linux':
  19. return 'production'
  20. else:
  21. return 'development' # 其他系统默认使用开发环境
  22. class BaseConfig:
  23. """基础配置类,包含所有环境共享的配置"""
  24. SECRET_KEY = os.environ.get('SECRET_KEY') or 'you-will-never-guess'
  25. JSON_AS_ASCII = False
  26. # 平台特定配置
  27. PLATFORM = platform.system().lower()
  28. # 文件上传配置
  29. ALLOWED_EXTENSIONS = {'txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif', 'xlsx', 'xls', 'csv'}
  30. # PostgreSQL 基础配置
  31. SQLALCHEMY_ENGINE_OPTIONS = {
  32. 'pool_pre_ping': True,
  33. 'pool_recycle': 300,
  34. 'pool_size': 10,
  35. 'max_overflow': 20
  36. }
  37. # Neo4j 基础配置
  38. NEO4J_ENCRYPTED = False
  39. class DevelopmentConfig(BaseConfig):
  40. """Windows 开发环境配置"""
  41. FLASK_ENV = 'development'
  42. DEBUG = True
  43. PORT = 5500
  44. # 开发环境 MinIO 配置
  45. MINIO_HOST = '192.168.67.138:9000'
  46. MINIO_USER = 'citu-test'
  47. MINIO_PASSWORD = 'citu-test'
  48. MINIO_SECURE = False
  49. BUCKET_NAME = 'dataops-bucket'
  50. PREFIX = ''
  51. # 开发环境 PostgreSQL 配置
  52. SQLALCHEMY_DATABASE_URI = 'postgresql://postgres:postgres@192.168.67.138:5432/dataops'
  53. # 开发环境 Neo4j 配置
  54. NEO4J_URI = "bolt://192.168.67.138:7687"
  55. NEO4J_HTTP_URI = "http://192.168.67.138:7474"
  56. NEO4J_USER = "neo4j"
  57. NEO4J_PASSWORD = "password"
  58. # 开发环境文件路径配置
  59. UPLOAD_BASE_PATH = 'C:\\tmp\\upload'
  60. ARCHIVE_BASE_PATH = 'C:\\tmp\\archive'
  61. class ProductionConfig(BaseConfig):
  62. """Linux 生产环境配置"""
  63. FLASK_ENV = 'production'
  64. DEBUG = False
  65. PORT = 80
  66. # 生产环境 MinIO 配置
  67. MINIO_HOST = os.environ.get('MINIO_HOST', 'minio.citupro.com')
  68. MINIO_USER = os.environ.get('MINIO_USER', 'default-user')
  69. MINIO_PASSWORD = os.environ.get('MINIO_PASSWORD', 'default-password')
  70. MINIO_SECURE = True
  71. BUCKET_NAME = 'dataops-bucket'
  72. PREFIX = ''
  73. # 生产环境 PostgreSQL 配置
  74. SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL', 'postgresql://postgres:citupgdba@192.168.3.143:5432/dataops')
  75. # 生产环境 Neo4j 配置
  76. NEO4J_URI = os.environ.get('NEO4J_URI', "bolt://192.168.3.143:7687")
  77. NEO4J_HTTP_URI = os.environ.get('NEO4J_HTTP_URI', "http://192.168.3.143:7474")
  78. NEO4J_USER = os.environ.get('NEO4J_USER', "neo4j")
  79. NEO4J_PASSWORD = os.environ.get('NEO4J_PASSWORD', "mxlneo4j")
  80. # 生产环境文件路径配置
  81. UPLOAD_BASE_PATH = '/data/upload'
  82. ARCHIVE_BASE_PATH = '/data/archive'
  83. # 配置字典
  84. config = {
  85. 'development': DevelopmentConfig,
  86. 'production': ProductionConfig,
  87. 'default': DevelopmentConfig
  88. }
  89. # 获取当前环境
  90. current_env = get_environment()