From 1c7e7cc886cbe577cfe8365e077f8752b69f6a72 Mon Sep 17 00:00:00 2001 From: George Date: Wed, 23 Sep 2026 10:05:34 +0530 Subject: [PATCH] feat: --ADDED WEB SOCKET FOR CPU, MEMORY AND DISK --- main.py | 95 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 main.py diff --git a/main.py b/main.py new file mode 100644 index 0000000..4fd20e2 --- /dev/null +++ b/main.py @@ -0,0 +1,95 @@ +import psutil +from fastapi import FastAPI + +app = FastAPI() + + +# @app.get("/hardware/status") +def hardware_status(): + + cpu = psutil.cpu_percent(interval=1) + memory = psutil.virtual_memory() + disk = psutil.disk_usage("/") + + return { + "cpu_usage_percent": cpu, + + "memory_usage_percent": memory.percent, + "memory_total_mb": round( + memory.total / 1024 / 1024, + 2 + ), + "memory_used_mb": round( + memory.used / 1024 / 1024, + 2 + ), + "memory_available_mb": round( + memory.available / 1024 / 1024, + 2 + ), + + "disk_usage_percent": disk.percent, + "disk_total_gb": round( + disk.total / 1024 / 1024 / 1024, + 2 + ), + "disk_used_gb": round( + disk.used / 1024 / 1024 / 1024, + 2 + ), + "disk_free_gb": round( + disk.free / 1024 / 1024 / 1024, + 2 + ) + } + +@app.websocket("/ws/hardware/status") +async def hardware_status_monitor(websocket: WebSocket): + + await websocket.accept() + + try: + + while True: + + try: + + result = await asyncio.wait_for( + asyncio.to_thread( + get_hardware_status + ), + timeout=3 + ) + + except asyncio.TimeoutError: + + result = { + "cpu_usage_percent": None, + "memory_usage_percent": None, + "memory_total_mb": None, + "memory_used_mb": None, + "memory_available_mb": None, + "disk_usage_percent": None, + "disk_total_gb": None, + "disk_used_gb": None, + "disk_free_gb": None, + "error": "Hardware monitoring timed out" + } + + await websocket.send_json(result) + + await asyncio.sleep(1) + + except WebSocketDisconnect: + + print("Hardware monitoring WebSocket disconnected") + +if __name__ == "__main__": + + import uvicorn + + uvicorn.run( + app, + host="0.0.0.0", + port=9100 + ) \ No newline at end of file