gpt4 book ai didi

python - 如何让 flask 应用程序每 5 分钟运行一次?

转载 作者:行者123 更新时间:2023-12-03 23:05:35 26 4
gpt4 key购买 nike

我有这个应用程序可以按照我想要的方式工作,但现在我希望它每 5 分钟从一些虚拟机中获取实时数据。在下面的代码中,我将它设置为每十秒更新一次,只是为了查看它是否有效,但什么也没发生。我正在使用 time.sleep。我还缺少什么?

import time
from flask import Flask, render_template
from testapi import grab_cpu

app = Flask(__name__)

starttime = time.time()
while True:

machines =["build05", "build06", "build07","build08", "build09", "build10", "build11", "build12","build14","build15", "winbuild10","winbuild11", "winbuild12", "winbuild13", "wbuild14", "wbuild15", "winbuild16", "winbuild17", "winbuild18"]

cpu_percentage =[grab_cpu("build05"), grab_cpu("build06"),grab_cpu("build07"),
grab_cpu("build08"), grab_cpu("build09"), grab_cpu("build10"), grab_cpu("build11"), grab_cpu("build12"), grab_cpu("build13"), grab_cpu("build14"), grab_cpu("build15"), grab_cpu("winbuild10"), grab_cpu("winbuild11"), grab_cpu("winbuild12"), grab_cpu("winbuild14"), grab_cpu("winbuild15"), grab_cpu("winbuild16"), grab_cpu("winbuild17"), grab_cpu("winbuild18")]

@app.route("/") # this sets the route to this page
def home():
return render_template('testdoc.html', len = len(machines), machines = machines, cpu_percentage = cpu_percentage)

app.run(use_reloader = True, debug = True)
time.sleep(10.0 - ((time.time() - starttime) % 10.0))
编辑(这是对建议的更新,它仍然无法如我所愿):
编辑更多信息:我有一个带有函数grab_cpu的文件,它对虚拟机进行api调用并返回使用百分比。我有另一个名为 test doc.html 的文件,它只显示 html。从这些回复中,我猜我需要使用一些 javascript 和一些带有套接字的东西。有人可以删除链接以指出我正确的方向吗?
import time
from flask import Flask, render_template
from testapi import grab_cpu

app = Flask(__name__)



@app.route("/") # this sets the route to this page
def home():
starttime = time.time()

while True:
machines =["build05", "build06", "build07","build08", "build09", "build10", "build11", "build12","build14","build15", "winbuild10","winbuild11", "winbuild12", "winbuild13", "wbuild14", "wbuild15", "winbuild16", "winbuild17", "winbuild18"]

cpu_percentage =[grab_cpu("build05"), grab_cpu("build06"),grab_cpu("build07"),
grab_cpu("build08"), grab_cpu("build09"), grab_cpu("build10"), grab_cpu("build11"), grab_cpu("build12"), grab_cpu("build13"), grab_cpu("build14"), grab_cpu("build15"), grab_cpu("winbuild10"), grab_cpu("winbuild11"), grab_cpu("winbuild12"), grab_cpu("winbuild14"), grab_cpu("winbuild15"), grab_cpu("winbuild16"), grab_cpu("winbuild17"), grab_cpu("winbuild18")]
return render_template('testdoc.html', len = len(machines), machines = machines, cpu_percentage = cpu_percentage)
time.sleep(10.0 - ((time.time() - starttime) % 10.0))
app.run(use_reloader = True, debug = True)

这是页面:
picture of site
谢谢你。

最佳答案

您的代码需要一些工作,Flask View 不打算在循环内声明。我建议如下:

  • 从 while 循环内部移除 Flask View 。
  • 也在循环之外声明服务器。
  • 在函数中编写代码。
  • 运行 while 循环,只需调用该函数即可从源中获取信息。

  • 基于我认为只是运行中的一个示例,我还将对您的要求做出一些假设:
  • 这不完全是您的代码。
  • 您的代码运行良好,但缺少此实现。
  • 您的项目具有一定程度的复杂性。
  • 您需要在其他地方显示此数据。

  • 基于这些(可能还有其他条件),我想说您有两种方法可以有效地实现您的需求:
  • (不推荐)创建一个 Cron 作业并在专用脚本中运行所有内容。
  • (我的最爱)将脚本的逻辑封装在 Flask API 调用、方法或函数中,并将其声明为 Celery 任务,计划每 5 秒运行一次,更新数据库,并使用具有一些 JS react 性的 View 以实时显示数据。
  • 关于python - 如何让 flask 应用程序每 5 分钟运行一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62926277/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com