主要修复: 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管理器 - 懒加载组件初始化 - 统一连接管理 - 线程安全设计 解决启动卡顿问题,提升系统响应速度
107 lines
3.0 KiB
Python
107 lines
3.0 KiB
Python
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
启动TSP智能助手综合管理平台
|
|
"""
|
|
|
|
import sys
|
|
import os
|
|
import logging
|
|
import threading
|
|
import asyncio
|
|
from datetime import datetime
|
|
|
|
# 添加项目根目录到Python路径
|
|
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
|
|
|
|
def setup_logging():
|
|
"""设置日志"""
|
|
logging.basicConfig(
|
|
level=logging.INFO,
|
|
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
|
|
handlers=[
|
|
logging.FileHandler('logs/dashboard.log'),
|
|
logging.StreamHandler()
|
|
]
|
|
)
|
|
|
|
def start_websocket_server():
|
|
"""启动WebSocket服务器"""
|
|
try:
|
|
from src.web.websocket_server import WebSocketServer
|
|
server = WebSocketServer(host="localhost", port=8765)
|
|
server.run()
|
|
except Exception as e:
|
|
print(f"WebSocket服务器启动失败: {e}")
|
|
|
|
def main():
|
|
"""主函数"""
|
|
print("=" * 60)
|
|
print("TSP智能助手 - 综合管理平台")
|
|
print("=" * 60)
|
|
print(f"启动时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
|
|
print()
|
|
|
|
# 设置日志
|
|
setup_logging()
|
|
logger = logging.getLogger(__name__)
|
|
|
|
try:
|
|
# 检查必要目录
|
|
os.makedirs('logs', exist_ok=True)
|
|
os.makedirs('data', exist_ok=True)
|
|
|
|
logger.info("正在启动TSP智能助手综合管理平台...")
|
|
|
|
# 跳过系统检查,直接启动(避免重复初始化)
|
|
logger.info("跳过系统检查,直接启动服务...")
|
|
|
|
# 导入并启动Flask应用
|
|
from src.web.app import app
|
|
|
|
print("系统功能:")
|
|
print(" ✓ 智能对话系统")
|
|
print(" ✓ 对话历史管理")
|
|
print(" ✓ Token消耗监控")
|
|
print(" ✓ AI调用成功率监控")
|
|
print(" ✓ Agent管理")
|
|
print(" ✓ 预警管理")
|
|
print(" ✓ 知识库管理")
|
|
print(" ✓ 工单管理")
|
|
print(" ✓ 数据分析")
|
|
print(" ✓ 系统设置")
|
|
print(" ✓ Redis缓存支持")
|
|
print(" ✓ 性能优化")
|
|
print()
|
|
print("访问地址:")
|
|
print(" 主页: http://localhost:5000")
|
|
print(" 预警管理: http://localhost:5000/alerts")
|
|
print(" 实时对话: http://localhost:5000/chat")
|
|
print(" WebSocket: ws://localhost:8765")
|
|
print()
|
|
print("按 Ctrl+C 停止服务")
|
|
print("=" * 60)
|
|
|
|
# 在单独线程中启动WebSocket服务器
|
|
websocket_thread = threading.Thread(target=start_websocket_server, daemon=True)
|
|
websocket_thread.start()
|
|
|
|
# 启动Flask应用
|
|
app.run(
|
|
debug=False,
|
|
host='0.0.0.0',
|
|
port=5000,
|
|
threaded=True
|
|
)
|
|
|
|
except KeyboardInterrupt:
|
|
print("\n正在停止服务...")
|
|
logger.info("用户手动停止服务")
|
|
except Exception as e:
|
|
print(f"启动失败: {e}")
|
|
logger.error(f"启动失败: {e}")
|
|
sys.exit(1)
|
|
|
|
if __name__ == "__main__":
|
|
main()
|