【问题标题】:Flask/Python - how to update progress bar with running progress [duplicate]Flask / Python - 如何使用运行进度更新进度条[重复]
【发布时间】:2020-10-20 19:26:42
【问题描述】:

我有一个需要一些时间的过程,我想在等待屏幕上显示一个进度条,进度条会在进度期间更新,直到完成,然后转到下一页。我有以下代码:

我有一个渲染等待屏幕的部分:

@app.route('/waiting_screen', methods=['POST','GET'])
def waiting():
    return render_template("waiting_screen.html")

以及正在处理处理的部分:

@app.route('/process',methods=['POST', 'GET'])
def process():
    file = df
    # Fill database
    for row in df:
        print(row)
    return render_template('finished_process.html')

我的 waiting_screen html 文件如下所示:

{% block content %}
<div method="POST">
    <h4 style="text-align:center"> Busy processing... </h4>
    <br>
    <head>
        <div id="loader"></div>
        <div style="display:none;" id="myDiv" class="animate-bottom" >
        </div >
        <script>
        var myVar;
        function myFunction() {
        myVar = setTimeout(showPage, 3000);
        }

        function showPage() {
        document.getElementById("myDiv").style.display = "block";
        }
        document.addEventListener("DOMContentLoaded", function(event) {
            waitForMe().then(() => {
                window.location.href = "/process";
            });
        });
        </script>
    </head>
</div>
{% endblock %}

这个页面给了我一个等待的动画,但是因为这个过程需要很长时间,我真的需要一个进程栏。

我已经尝试过按下按钮并运行进度条的示例,但我注意到我没有经验来了解我的 Python 函数和 HTML 页面中的脚本如何通信,所以我不能让他们联系起来。

【问题讨论】:

    标签: javascript python jquery flask progress-bar


    【解决方案1】:

    首先,您能否从当前正在运行的后台任务中提取百分比?

    如果你是,我认为你应该使用像Flask-SocketIO 这样的东西,它可以让你的服务器轻松地“实时”地与你的前端通信。这样,您可以例如每秒发送一次状态更新。在您的前端,您将监听此事件并相应地更新进度条。

    【讨论】:

    • 是的,我忘了说,我的任务可以分成 x 个部分,所以我做 100/x 可以更新 for 循环中的进度条。 Flask Socket 看起来不错,我没穿过,我马上去看看,谢谢!
    • 好的,很好!告诉我进展如何!
    猜你喜欢
    • 1970-01-01
    • 2021-05-29
    • 2013-03-08
    • 1970-01-01
    • 2012-03-06
    • 2016-08-17
    • 1970-01-01
    相关资源
    最近更新 更多