import psutil import http.server import socketserver import json PORT = 8000 class SystemInfoHandler(http.server.SimpleHTTPRequestHandler): def do_OPTIONS(self): self.send_response(200, "ok") self.send_header('Access-Control-Allow-Origin', '*') self.send_header('Access-Control-Allow-Methods', 'GET, OPTIONS') self.send_header("Access-Control-Allow-Headers", "X-Requested-With, Content-type") self.end_headers() def do_GET(self): if self.path == '/stats': self.send_response(200) self.send_header('Content-type', 'application/json') self.send_header('Access-Control-Allow-Origin', '*') self.end_headers() stats = { 'cpu_percent': psutil.cpu_percent(interval=1), 'memory_percent': psutil.virtual_memory().percent } self.wfile.write(json.dumps(stats).encode('utf-8')) else: super().do_GET() class QuietSystemInfoHandler(SystemInfoHandler): def log_message(self, format, *args): if self.path != '/stats': super().log_message(format, *args) socketserver.TCPServer.allow_reuse_address = True with socketserver.TCPServer(('', PORT), QuietSystemInfoHandler) as httpd: print("serving at port", PORT) try: httpd.serve_forever() except KeyboardInterrupt: print("\nShutting down server.") httpd.shutdown()