42 lines
1.4 KiB
Python
42 lines
1.4 KiB
Python
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)
|
|
|
|
with socketserver.TCPServer(('', PORT), QuietSystemInfoHandler) as httpd:
|
|
print("serving at port", PORT)
|
|
try:
|
|
httpd.serve_forever()
|
|
except KeyboardInterrupt:
|
|
print("\nShutting down server.")
|
|
httpd.shutdown()
|