एक Ajax अनुरोध
Python
@app.route('/_stuff', methods= ['GET'])
def stuff():
cpu=round(getCpuLoad())
ram=round(getVmem())
disk=round(getDisk())
return jsonify(cpu=cpu, ram=ram, disk=disk)
Javascript
function update_values() {
$SCRIPT_ROOT = {{ request.script_root|tojson|safe }};
$.getJSON($SCRIPT_ROOT+"/_stuff",
function(data) {
$("#cpuload").text(data.cpu+" %")
$("#ram").text(data.ram+" %")
$("#disk").text(data.disk+" %")
});
}
WebSockets का उपयोग का उपयोग करना
project/app/views/request/websockets.py
# -*- coding: utf-8 -*-
# OS Imports
import json
# Local Imports
from app import sockets
from app.functions import get_cpu_load, get_disk_usage, get_vmem
@sockets.route('/_socket_system')
def socket_system(ws):
"""
Returns the system informations, JSON Format
CPU, RAM, and Disk Usage
"""
while True:
message = ws.receive()
if message == "update":
cpu = round(get_cpu_load())
ram = round(get_vmem())
disk = round(get_disk_usage())
ws.send(json.dumps(dict(received=message, cpu=cpu, ram=ram, disk=disk)))
else:
ws.send(json.dumps(dict(received=message)))
project/app/__init__.py
# -*- coding: utf-8 -*-
from flask import Flask
from flask_sockets import Sockets
app = Flask(__name__)
sockets = Sockets(app)
app.config.from_object('config')
from app import views
कुप्पी के WebSockets का उपयोग करना मेरे जीवन बहुत आसान बना दिया। यहाँ लांचर है: launchwithsockets.sh
#!/bin/sh
gunicorn -k flask_sockets.worker app:app
अंत में, यहाँ ग्राहक कोड है:
custom.js
The code is a bit too long, so here it is.
ध्यान दें कि मैं चीजों को socket.io पसंद नहीं उपयोग कर रहा हूँ, यही कारण है कि कोड लंबा है। यह कोड समय-समय पर सर्वर से फिर से कनेक्ट करने का प्रयास करता है, और उपयोगकर्ता कार्रवाई पर पुनः कनेक्ट करने का प्रयास करना बंद कर सकता है। मैं उपयोगकर्ता को सूचित करने के लिए मैसेंजर lib का उपयोग करता हूं कि कुछ गलत हो गया है। बेशक यह socket.io का उपयोग करने से थोड़ा अधिक जटिल है, लेकिन मुझे वास्तव में क्लाइंट पक्ष को कोडिंग का मज़ा आया।
पृष्ठ को पुनः लोड नहीं करना मतलब है कि आपको क्लाइंट से कोड निष्पादित करना है, जिसका अर्थ है कि आपके पास ** जावास्क्रिप्ट का उपयोग करने के लिए ** है। साथ ही, जब आप सीपीयू उपयोग कहते हैं तो क्या आपका मतलब है कि आपका सर्वर? –
यूप, आपको CPU उपयोग पर अद्यतन प्राप्त करने के लिए सर्वर से एक क्वेरी बनाने के लिए जावास्क्रिप्ट का उपयोग करना होगा। पूरी तरह से सर्वर की तरफ से ऐसा करना संभव नहीं है। – aychedee
यदि आपने वेबस्केट कनेक्शन स्थापित किया है, तो सर्वर क्लाइंट को अद्यतन धक्का दे सकता है। लेकिन आप अभी भी कनेक्शन बनाने और सर्वर से अद्यतनों के साथ सौदा करने के लिए जेएस का उपयोग करेंगे। – aychedee