Blame view

config/env_config.py 3.7 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
      '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',
5ac64fc7   tangwang   多语言查询
34
35
      'cache_expire_days': int(os.getenv('REDIS_CACHE_EXPIRE_DAYS', 360*2)),  # 6 months
      'translation_cache_expire_days': int(os.getenv('REDIS_TRANSLATION_CACHE_EXPIRE_DAYS', 360*2)),
453992a8   tangwang   需求:
36
      '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')
  
3cd09b3b   tangwang   翻译接口改为调用qwen-mt-f...
42
43
44
  # DashScope API Key (for Qwen models)
  DASHSCOPE_API_KEY = os.getenv('DASHSCOPE_API_KEY')
  
be52af70   tangwang   first commit
45
46
  # API Service Configuration
  API_HOST = os.getenv('API_HOST', '0.0.0.0')
2a76641e   tangwang   config
47
  API_PORT = int(os.getenv('API_PORT', 6002))
362d43b6   tangwang   店匠体系数据的搜索
48
49
50
51
  # 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
52
53
54
55
56
57
58
59
  
  # 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配置演示流程和数据库配置
60
61
  # MySQL Database Configuration (Shoplazza)
  DB_CONFIG = {
fb68a0ef   tangwang   配置优化
62
63
64
65
66
      '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配置演示流程和数据库配置
67
68
  }
  
be52af70   tangwang   first commit
69
  
be52af70   tangwang   first commit
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
  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
89
90
91
92
93
94
95
96
97
98
99
      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配置演示流程和数据库配置
100
101
102
103
104
105
106
      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
107
108
109
110
111
      print("=" * 60)
  
  
  if __name__ == "__main__":
      print_config()