修复重复初始化问题 - 统一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:
@@ -84,16 +84,16 @@ def get_chat_manager():
|
||||
"""获取聊天管理器实例(懒加载)"""
|
||||
global chat_manager
|
||||
if chat_manager is None:
|
||||
from src.dialogue.realtime_chat import RealtimeChatManager
|
||||
chat_manager = RealtimeChatManager()
|
||||
from src.core.component_singletons import component_singletons
|
||||
chat_manager = component_singletons.get_chat_manager()
|
||||
return chat_manager
|
||||
|
||||
def get_vehicle_manager():
|
||||
"""获取车辆数据管理器实例(懒加载)"""
|
||||
global vehicle_manager
|
||||
if vehicle_manager is None:
|
||||
from src.vehicle.vehicle_data_manager import VehicleDataManager
|
||||
vehicle_manager = VehicleDataManager()
|
||||
from src.core.component_singletons import component_singletons
|
||||
vehicle_manager = component_singletons.get_vehicle_manager()
|
||||
return vehicle_manager
|
||||
|
||||
# 注册蓝图
|
||||
|
||||
@@ -10,10 +10,13 @@ from src.analytics.alert_system import AlertRule, AlertLevel, AlertType
|
||||
|
||||
alerts_bp = Blueprint('alerts', __name__, url_prefix='/api/alerts')
|
||||
|
||||
# 使用全局单例避免重复创建
|
||||
_assistant = None
|
||||
|
||||
def get_assistant():
|
||||
"""获取TSP助手实例(懒加载)"""
|
||||
global _assistant
|
||||
if '_assistant' not in globals():
|
||||
if _assistant is None:
|
||||
_assistant = TSPAssistant()
|
||||
return _assistant
|
||||
|
||||
|
||||
@@ -13,17 +13,21 @@ from src.agent_assistant import TSPAgentAssistant
|
||||
|
||||
knowledge_bp = Blueprint('knowledge', __name__, url_prefix='/api/knowledge')
|
||||
|
||||
# 使用全局单例避免重复创建
|
||||
_assistant = None
|
||||
_agent_assistant = None
|
||||
|
||||
def get_assistant():
|
||||
"""获取TSP助手实例(懒加载)"""
|
||||
global _assistant
|
||||
if '_assistant' not in globals():
|
||||
if _assistant is None:
|
||||
_assistant = TSPAssistant()
|
||||
return _assistant
|
||||
|
||||
def get_agent_assistant():
|
||||
"""获取Agent助手实例(懒加载)"""
|
||||
global _agent_assistant
|
||||
if '_agent_assistant' not in globals():
|
||||
if _agent_assistant is None:
|
||||
_agent_assistant = TSPAgentAssistant()
|
||||
return _agent_assistant
|
||||
|
||||
|
||||
@@ -32,10 +32,13 @@ def calculate_conversation_tokens(conversations):
|
||||
total_tokens += estimate_tokens(user_message) + estimate_tokens(assistant_response)
|
||||
return total_tokens
|
||||
|
||||
# 使用全局单例避免重复创建
|
||||
_assistant = None
|
||||
|
||||
def get_assistant():
|
||||
"""获取TSP助手实例(懒加载)"""
|
||||
global _assistant
|
||||
if '_assistant' not in globals():
|
||||
if _assistant is None:
|
||||
_assistant = TSPAssistant()
|
||||
return _assistant
|
||||
|
||||
|
||||
@@ -18,10 +18,13 @@ from src.core.query_optimizer import query_optimizer
|
||||
|
||||
workorders_bp = Blueprint('workorders', __name__, url_prefix='/api/workorders')
|
||||
|
||||
# 使用全局单例避免重复创建
|
||||
_assistant = None
|
||||
|
||||
def get_assistant():
|
||||
"""获取TSP助手实例(懒加载)"""
|
||||
global _assistant
|
||||
if '_assistant' not in globals():
|
||||
if _assistant is None:
|
||||
_assistant = TSPAssistant()
|
||||
return _assistant
|
||||
|
||||
@@ -205,7 +208,8 @@ def generate_workorder_ai_suggestion(workorder_id):
|
||||
# 组装提示词
|
||||
context = "\n".join([f"Q: {k.get('question','')}\nA: {k.get('answer','')}" for k in kb_list])
|
||||
from src.core.llm_client import QwenClient
|
||||
llm = QwenClient()
|
||||
from ...core.component_singletons import component_singletons
|
||||
llm = component_singletons.get_llm_client()
|
||||
prompt = f"请基于以下工单描述与知识库片段,给出简洁、可执行的处理建议。\n工单描述:\n{w.description}\n\n知识库片段:\n{context}\n\n请直接输出建议文本:"
|
||||
llm_resp = llm.chat_completion(messages=[{"role":"user","content":prompt}], temperature=0.3, max_tokens=800)
|
||||
suggestion = ""
|
||||
|
||||
@@ -23,7 +23,9 @@ class WebSocketServer:
|
||||
def __init__(self, host: str = "localhost", port: int = 8765):
|
||||
self.host = host
|
||||
self.port = port
|
||||
self.chat_manager = RealtimeChatManager()
|
||||
# 使用单例避免重复创建
|
||||
from ..core.component_singletons import component_singletons
|
||||
self.chat_manager = component_singletons.get_chat_manager()
|
||||
self.connected_clients: Set[WebSocketServerProtocol] = set()
|
||||
|
||||
async def register_client(self, websocket: WebSocketServerProtocol):
|
||||
|
||||
Reference in New Issue
Block a user