使用Flask up任务完成闪烁消息

时间:2018-02-16 16:54:52

标签: python flask

我还是Flask的新手,我正在尝试建立一个烧瓶应用程序,当任务完成时闪烁状态

`

app.route("/", methods=['GET', 'POST'])
def root():

    form = ReusableForm(request.form)


    if request.method == 'POST':
        name = request.form['name']

        if form.validate():
            Reports1 = RunReport1()
            flash('Report 1 run successfully')
            Report2 = RunReport2()
            flash('Report 2 run successfully')
    return render_template('run.html', form=form)'

然而,似乎没有办法在不每次渲染html页面的情况下刷新消息。任何帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:0)

你可以在没有往返系统的情况下使用Flask。您必须使用content streaming。为此,您必须使用stream_with_context作为回复。

@app.route("/")
def root():
    reports = ["Reports1", "Reports2"]

    def generate_output():
        for i in range(0, len(reports)):
            report = reports[i]
            template = '<p>{{ report }}.</p>'
            context = {'report': report}
            yield render_template_string(template, **context)
            time.sleep(5)

    return Response(stream_with_context(generate_output()))

因此,这将更新响应,直到服务器端完成其任务。通常,这用于长时间运行的过程。请参阅documentation

希望这有帮助!