修复重复初始化问题 - 统一Redis连接管理

主要修复:
1. 创建统一Redis连接管理器 (src/core/redis_manager.py)
   - 单例模式管理所有Redis连接
   - 懒加载连接,避免重复初始化
   - 线程安全的连接管理

2. 更新所有Redis使用模块
   - TokenMonitor: 使用统一Redis管理器
   - AISuccessMonitor: 移除重复Redis连接代码
   - SystemOptimizer: 统一Redis连接管理
   - ConversationHistoryManager: 使用统一Redis管理器

3. 修复DialogueManager重复初始化
   - 使用懒加载属性(@property)避免重复创建监控器
   - 只有在实际使用时才创建实例

4. 优化启动性能
   - 避免重复的Redis连接创建
   - 消除重复的TSP助手初始化
   - 减少启动时的日志输出

技术改进:
- 单例模式Redis管理器
- 懒加载组件初始化
- 统一连接管理
- 线程安全设计

解决启动卡顿问题,提升系统响应速度
This commit is contained in:
赵杰 Jie Zhao (雄狮汽车科技)
2025-09-18 20:12:54 +01:00
parent abb996abef
commit 82ab90450b
15 changed files with 26 additions and 131 deletions

View File

@@ -1,81 +0,0 @@
# -*- coding: utf-8 -*-
"""
组件单例管理器
避免重复初始化各种组件
"""
import threading
from typing import Optional
class ComponentSingletons:
"""组件单例管理器"""
_instance = None
_lock = threading.Lock()
def __new__(cls):
if cls._instance is None:
with cls._lock:
if cls._instance is None:
cls._instance = super().__new__(cls)
cls._instance._initialized = False
return cls._instance
def __init__(self):
if self._initialized:
return
self._llm_client = None
self._analytics_manager = None
self._alert_system = None
self._vehicle_manager = None
self._chat_manager = None
self._initialized = True
def get_llm_client(self):
"""获取LLM客户端懒加载"""
if self._llm_client is None:
with self._lock:
if self._llm_client is None:
from ..core.llm_client import QwenClient
self._llm_client = QwenClient()
return self._llm_client
def get_analytics_manager(self):
"""获取分析管理器(懒加载)"""
if self._analytics_manager is None:
with self._lock:
if self._analytics_manager is None:
from ..analytics.analytics_manager import AnalyticsManager
self._analytics_manager = AnalyticsManager()
return self._analytics_manager
def get_alert_system(self):
"""获取预警系统(懒加载)"""
if self._alert_system is None:
with self._lock:
if self._alert_system is None:
from ..analytics.alert_system import AlertSystem
self._alert_system = AlertSystem()
return self._alert_system
def get_vehicle_manager(self):
"""获取车辆数据管理器(懒加载)"""
if self._vehicle_manager is None:
with self._lock:
if self._vehicle_manager is None:
from ..vehicle.vehicle_data_manager import VehicleDataManager
self._vehicle_manager = VehicleDataManager()
return self._vehicle_manager
def get_chat_manager(self):
"""获取聊天管理器(懒加载)"""
if self._chat_manager is None:
with self._lock:
if self._chat_manager is None:
from ..dialogue.realtime_chat import RealtimeChatManager
self._chat_manager = RealtimeChatManager()
return self._chat_manager
# 全局单例实例
component_singletons = ComponentSingletons()