Blame view

config/env_config.py 3.61 KB
be52af70   tangwang   first commit
1
2
3
4
  """
  Centralized configuration management for SearchEngine.
  
  Loads configuration from environment variables and .env file.
325eec03   tangwang   1. 日志、配置基础设施,使用优化
5
6
  This module provides a single point for loading .env and setting defaults.
  All configuration variables are exported directly - no need for getter functions.
be52af70   tangwang   first commit
7
8
9
10
  """
  
  import os
  from pathlib import Path
be52af70   tangwang   first commit
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
  from dotenv import load_dotenv
  
  # Load .env file from project root
  PROJECT_ROOT = Path(__file__).parent.parent
  load_dotenv(PROJECT_ROOT / '.env')
  
  
  # Elasticsearch Configuration
  ES_CONFIG = {
      'host': os.getenv('ES_HOST', 'http://localhost:9200'),
      'username': os.getenv('ES_USERNAME'),
      'password': os.getenv('ES_PASSWORD'),
  }
  
  # Redis Configuration
  REDIS_CONFIG = {
      'host': os.getenv('REDIS_HOST', 'localhost'),
      'port': int(os.getenv('REDIS_PORT', 6479)),
453992a8   tangwang   需求:
29
30
31
32
33
34
35
36
      'snapshot_db': int(os.getenv('REDIS_SNAPSHOT_DB', 0)),
      'password': os.getenv('REDIS_PASSWORD', 'BMfv5aI31kgHWtlx'),
      'socket_timeout': int(os.getenv('REDIS_SOCKET_TIMEOUT', 1)),
      'socket_connect_timeout': int(os.getenv('REDIS_SOCKET_CONNECT_TIMEOUT', 1)),
      'retry_on_timeout': os.getenv('REDIS_RETRY_ON_TIMEOUT', 'False').lower() == 'true',
      'cache_expire_days': int(os.getenv('REDIS_CACHE_EXPIRE_DAYS', 180)),  # 6 months
      'translation_cache_expire_days': int(os.getenv('REDIS_TRANSLATION_CACHE_EXPIRE_DAYS', 360)),
      'translation_cache_prefix': os.getenv('REDIS_TRANSLATION_CACHE_PREFIX', 'trans'),
be52af70   tangwang   first commit
37
38
39
40
41
  }
  
  # DeepL API Key
  DEEPL_AUTH_KEY = os.getenv('DEEPL_AUTH_KEY')
  
be52af70   tangwang   first commit
42
43
  # API Service Configuration
  API_HOST = os.getenv('API_HOST', '0.0.0.0')
2a76641e   tangwang   config
44
  API_PORT = int(os.getenv('API_PORT', 6002))
362d43b6   tangwang   店匠体系数据的搜索
45
46
47
48
  # API_BASE_URL: 如果未设置,根据API_HOST构建(0.0.0.0使用localhost)
  API_BASE_URL = os.getenv('API_BASE_URL')
  if not API_BASE_URL:
      API_BASE_URL = f'http://localhost:{API_PORT}' if API_HOST == '0.0.0.0' else f'http://{API_HOST}:{API_PORT}'
be52af70   tangwang   first commit
49
50
51
52
53
54
55
56
  
  # Model Directories
  TEXT_MODEL_DIR = os.getenv('TEXT_MODEL_DIR', '/data/tw/models/bge-m3')
  IMAGE_MODEL_DIR = os.getenv('IMAGE_MODEL_DIR', '/data/tw/models/cn-clip')
  
  # Cache Directory
  CACHE_DIR = os.getenv('CACHE_DIR', '.cache')
  
1852e3e3   tangwang   添加Base配置演示流程和数据库配置
57
58
  # MySQL Database Configuration (Shoplazza)
  DB_CONFIG = {
fb68a0ef   tangwang   配置优化
59
60
61
62
63
      'host': os.getenv('DB_HOST'),
      'port': int(os.getenv('DB_PORT', 3306)) if os.getenv('DB_PORT') else 3306,
      'database': os.getenv('DB_DATABASE'),
      'username': os.getenv('DB_USERNAME'),
      'password': os.getenv('DB_PASSWORD'),
1852e3e3   tangwang   添加Base配置演示流程和数据库配置
64
65
  }
  
be52af70   tangwang   first commit
66
  
be52af70   tangwang   first commit
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
  def print_config():
      """Print current configuration (with sensitive data masked)."""
      print("=" * 60)
      print("SearchEngine Configuration")
      print("=" * 60)
  
      print("\nElasticsearch:")
      print(f"  Host: {ES_CONFIG['host']}")
      print(f"  Username: {ES_CONFIG['username']}")
      print(f"  Password: {'*' * 10 if ES_CONFIG['password'] else 'None'}")
  
      print("\nRedis:")
      print(f"  Host: {REDIS_CONFIG['host']}")
      print(f"  Port: {REDIS_CONFIG['port']}")
      print(f"  Password: {'*' * 10 if REDIS_CONFIG['password'] else 'None'}")
  
      print("\nDeepL:")
      print(f"  API Key: {'*' * 10 if DEEPL_AUTH_KEY else 'None (translation disabled)'}")
  
be52af70   tangwang   first commit
86
87
88
89
90
91
92
93
94
95
96
      print("\nAPI Service:")
      print(f"  Host: {API_HOST}")
      print(f"  Port: {API_PORT}")
  
      print("\nModels:")
      print(f"  Text Model: {TEXT_MODEL_DIR}")
      print(f"  Image Model: {IMAGE_MODEL_DIR}")
  
      print("\nCache:")
      print(f"  Cache Directory: {CACHE_DIR}")
  
1852e3e3   tangwang   添加Base配置演示流程和数据库配置
97
98
99
100
101
102
103
      print("\nMySQL Database:")
      print(f"  Host: {DB_CONFIG['host']}")
      print(f"  Port: {DB_CONFIG['port']}")
      print(f"  Database: {DB_CONFIG['database']}")
      print(f"  Username: {DB_CONFIG['username']}")
      print(f"  Password: {'*' * 10 if DB_CONFIG['password'] else 'None'}")
  
be52af70   tangwang   first commit
104
105
106
107
108
      print("=" * 60)
  
  
  if __name__ == "__main__":
      print_config()