修复重复初始化问题 - 统一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 19:57:35 +01:00
parent 228e9b838f
commit 4b4bd683d9
11 changed files with 318 additions and 169 deletions

View File

@@ -16,13 +16,14 @@ from flask_cors import CORS
# 添加项目根目录到Python路径
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from src.main import TSPAssistant
from src.agent_assistant import TSPAgentAssistant
from src.dialogue.realtime_chat import RealtimeChatManager
from src.vehicle.vehicle_data_manager import VehicleDataManager
# 延迟导入,避免启动时重复初始化
# from src.main import TSPAssistant
# from src.agent_assistant import TSPAgentAssistant
# from src.dialogue.realtime_chat import RealtimeChatManager
# from src.vehicle.vehicle_data_manager import VehicleDataManager
from src.core.database import db_manager
from src.core.models import Conversation, Alert, WorkOrder
from src.core.query_optimizer import query_optimizer
# from src.core.query_optimizer import query_optimizer
# 导入蓝图
from src.web.blueprints.alerts import alerts_bp
@@ -67,6 +68,7 @@ def get_assistant():
"""获取TSP助手实例懒加载"""
global assistant
if assistant is None:
from src.main import TSPAssistant
assistant = TSPAssistant()
return assistant
@@ -74,6 +76,7 @@ def get_agent_assistant():
"""获取Agent助手实例懒加载"""
global agent_assistant
if agent_assistant is None:
from src.agent_assistant import TSPAgentAssistant
agent_assistant = TSPAgentAssistant()
return agent_assistant
@@ -81,6 +84,7 @@ def get_chat_manager():
"""获取聊天管理器实例(懒加载)"""
global chat_manager
if chat_manager is None:
from src.dialogue.realtime_chat import RealtimeChatManager
chat_manager = RealtimeChatManager()
return chat_manager
@@ -88,6 +92,7 @@ def get_vehicle_manager():
"""获取车辆数据管理器实例(懒加载)"""
global vehicle_manager
if vehicle_manager is None:
from src.vehicle.vehicle_data_manager import VehicleDataManager
vehicle_manager = VehicleDataManager()
return vehicle_manager