当前位置: 首页 > 面试题库 >

定期更新和渲染Flask中的值

相弘方
2023-03-14
问题内容

我想动态显示我的CPU使用率。我不想重新加载页面以查看新值。我知道如何在Python中获得CPU使用率。现在,我使用该值渲染一个模板。如何使用Flask中的值连续更新页面?

@app.route('/show_cpu')
def show_cpu():
    cpu = getCpuLoad()
    return render_template('show_cpu.html', cpu=cpu)

问题答案:

使用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

使用Flask-Websockets使我的生活更加轻松。这是启动器: launchwithsockets.sh

#!/bin/sh

gunicorn -k flask_sockets.worker app:app

请注意,我没有使用socket.io之类的东西,这就是代码很长的原因。此代码还尝试定期重新连接到服务器,并且可以停止尝试通过用户操作重新连接。我使用Messenger库来通知用户出现问题。当然,这比使用socket.io要复杂一些,但是我非常喜欢对客户端进行编码。



 类似资料:
  • 问题内容: 我目前有一个Flask网络服务器,该服务器使用内置的requests对象从JSON API中提取数据。 例如: 这里的问题是,自然地,GET方法仅在第一次调用get_data时运行一次。为了刷新数据,我必须停止并重新启动Flask wsgi服务器。我曾尝试在True / sleep循环中包装代码的各个部分,但这会阻止werkzeug加载页面。 动态地获取我想要的数据而无需重新加载页面或

  • 问题内容: 我是Java 3d的新手。我遇到了类似的情况,我想在Java程序中加载在3d建模软件(如3d studio max或Maya)中开发的任何对象的现成3d模型(例如鞋),然后更新其纹理或颜色属性等。渲染它,然后将更新的模型显示给最终用户。 所以我问所有3D专家,我应该如何继续前进才能实现自己的目标?我应该在程序中加载哪个输入?我如何更新加载的模型,进行渲染并向最终用户显示更新的模型? 简

  • 如何将 2 个 graphql 查询与 react-apollo-hooks 结合使用,其中第 2 个查询依赖于从第 1 个查询中检索到的参数? 我尝试使用如下所示的两个查询: 然而,当我运行我的项目时,react-hooks给我以下消息: " index.js:1437警告:React检测到Upgrade调用的挂钩顺序发生了变化。如果不修复,这将导致错误和错误。有关更多信息,请阅读“挂钩规则”

  • 问题内容: 有问题的代码: 在我看来: 此输出,而不是实际字段。我如何使用wtform获得实际的表单/字段? 问题答案: 我知道这已经很老了,但是我遇到了同样的问题,我想分享自己的解决方案以满足期货需求。 我还得到了由“ UnboundField”呈现的html。与代码战斗之后,我发现我正在使用: 它看起来不错,但是在使用Flask时,我必须这样做: 解决了我的问题。希望能有所帮助

  • 我在一个应用程序的前端原型上工作,该应用程序具有给定的JS、React和CoreUI4 React技术栈。我来自Python背景,在网络开发和我给定的技术堆栈方面没有太多经验。当我不得不开始使用钩子时,这一点变得很明显。 问题 我真的不明白为什么它不更新我的和/或不渲染。我需要一个条件渲染,我也使用。 我试图: 从我的主应用程序中传递一个更大的状态,一旦我启动条件逻辑(挂钩规则)就无法工作。 当我

  • 我有一个带有对象数组的组件,其中我正在根据字符串进行过滤。问题是当我尝试将此过滤器的返回设置为本地状态时,它会抛出错误,我不太理解原因。 所以,因为我希望这个数组处于我的状态,所以我决定这样做: 插入这一行后发生的事情是这样的: 它开始多次渲染。我假设,每次状态改变时,它都会重新渲染组件(如果我错了,请纠正我)。不过,我不知道它为什么要多次这样做。 因此,我想过使用 useEffect 来实现此处