0

我正在通过我从用户那里获取输入来构建一个 gui/仪表板类型的东西。当用户按下提交时。我收集响应并在后端启动一个工作。我希望实现的是..当用户按下提交时:并且正在处理那个长作业,我会显示类似:“您的作业已成功提交)提交并且完成时..我刷新页面以采取用户访问该页面。

这是我的 route.py 片段的样子

@app.route('/',methods=['POST'])
def get_data():
    data = request.form
    for data_tuple in data:

            requests_to_gb[data_tuple] = data[data_tuple]
    flag = execute_request(requests_to_gb) <---Fires a job

    if flag:
        flash("Your request has been submitted")

    else:
        flash("request could not be completed!")
    return render_template('request_submitted.html')

但问题是..我 execute_request() 的那条线需要很长时间才能处理.. 一切都停止了,直到完成?我该如何处理?以及如何自动刷新到新页面?

4

1 回答 1

3

使用celery哪个是分布式任务队列。快速入门指南应该可以帮助您。

简而言之,它允许您将任务卸载到在后台运行的工作人员,这样您就不会阻塞您的主用户界面(这是您试图阻止的)。

好消息是它很容易与flask(或django,或其他任何东西)集成,因为它是用Python编写的。

于 2013-02-15T22:43:30.757 回答