# _*_ coding: utf-8 _*_ # @Time :2022/5/29 09:15 # @Email :508737091@qq.com # @Author :qiangyanwen # @File :sys_monitor_api.py import json import time from fastapi import APIRouter, Body, Depends, Query, WebSocket, WebSocketDisconnect from utils.mem import get_disk_info, get_sys_info, get_cpu_info, ge_mem_info from utils.websocket_manager import manager import asyncio from config.log import logger router = APIRouter(prefix="/api", tags=["系统模块"]) @router.websocket("/ws") async def websocket_endpoint( websocket: WebSocket ): await manager.connect(websocket) logger.info("ws开始连接....") logger.info("websocket client ip==>{} port===>{}".format(websocket.client.host, websocket.client.port)) message = {"disk_info": await get_disk_info(), "sys_info": await get_sys_info(), "cpu_info": await get_cpu_info(), "memory_info": await ge_mem_info()} try: while True: try: data = await asyncio.wait_for(websocket.receive_text(), 3) await manager.send_json(message, websocket) except asyncio.TimeoutError: logger.info("开始推送数据.......") await manager.send_json(message, websocket) except (WebSocketDisconnect, RuntimeError,): logger.info("ws开始关闭连接.....") manager.disconnect(websocket)