文件
wangchuanli 762b4b49a0 feat: 初始化 GPU Monitor 项目
搭建基于 Flask + SocketIO 的 GPU 集群实时监控系统,包含远程采集、定时调度、Web 前端可视化及项目文档。
2026-08-24 15:00:43 +08:00

37 行
1.3 KiB
Python

from flask import Flask, render_template
from flask_socketio import SocketIO
from core.scheduler import GPUScheduler
import os
app = Flask(__name__)
# SECRET_KEY 从环境变量读取,避免硬编码密钥;未设置时使用随机值(生产环境务必配置)
app.config['SECRET_KEY'] = os.environ.get('GPU_MONITOR_SECRET_KEY', os.urandom(24).hex())
socketio = SocketIO(app, cors_allowed_origins="*")
# 初始化调度器
CONFIG_PATH = os.path.join(os.path.dirname(__file__), 'config.yaml')
gpu_scheduler = GPUScheduler(CONFIG_PATH, socketio=socketio)
@app.route('/')
def index():
"""主监控页面"""
return render_template('index.html')
@socketio.on('connect')
def handle_connect():
print("Client connected")
# 客户端连接时,立即发送一次当前缓存的数据
if gpu_scheduler.last_data:
socketio.emit('gpu_update', gpu_scheduler.last_data)
if __name__ == '__main__':
# 启动定时采集任务
if gpu_scheduler.start():
print("GPU Scheduler started successfully.")
else:
print("Failed to start GPU Scheduler. Please check config.yaml.")
# 运行 Flask 应用
# 注意:使用 socketio.run 而不是 app.run 以支持 WebSocket
socketio.run(app, host='0.0.0.0', port=8099, debug=True)