【问题标题】:How to show the progress of python script execution statement by statement in real time on browser with Flask framework?如何在带有Flask框架的浏览器上实时显示python脚本执行语句的进度?
【发布时间】:2020-04-24 13:40:13
【问题描述】:

我正在尝试将用 python 编写的命令行脚本转换为 Web 应用程序。

我打算使用 python 和烧瓶设计一个 Web 应用程序。用户将在网页上提供一些输入并提交。然后,输入数据将作为参数传递给用 python 编写的函数(基本上是旧脚本)。这个函数会做很多事情。在执行函数时,我想在网页上实时显示函数执行的状态(已完成的步骤)。

例如 - 如果用户在网页上输入字段的值 - radius, length, breadth, base, height 并单击 submit 按钮,则会运行名为 calculate_area(radius, length, breadth, base, height) 的函数,并且应用程序应周期性地依次发送圆形、矩形和三角形的区域每个面积计算之间有一些时间延迟。例如。

   Calculating area of circle ...
   Area of circle is - xxx
   Calculating area of rectangle ...
   Area of rectangle is - yyy
   Calculating area of triangle ...
   Area of triangle is - zzz

有人可以指出什么可以帮助实现这一目标吗?提前致谢。

【问题讨论】:

  • 您将不得不使用 JavaScript/AJAX 定期向服务器询问结果。
  • 好吧,如果我在网页上向用户显示一些状态,而不是进度条会更好。
  • @furas - 您能否进一步详细说明或分享链接?谢谢!

标签: python html flask websocket


【解决方案1】:

@metatoaster 为您指明了正确的方向:Flask App: Update progress bar while function runs 您可以返回一个字符串,而不是返回一个整数作为进度(例如,'Calculating area of​​ circle ...')

在您的网页上,您需要使用 JavaScript/JQuery/AJAX 轮询进度并将其附加到 HTML divtextarea,如示例所示。

const logarea = $('#logarea');
setInterval(update_progress, 500); // Polling every 500ms

function update_progress() {
    $.get('progress/' + task_id, function (progress) {    
        if (logarea.val().indexOf(progress) === -1) {
            logarea.val(logarea.val() + progress + '\n');
        }
    });
}

【讨论】:

    猜你喜欢
    • 2013-12-22
    • 1970-01-01
    • 2017-02-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多