如何执行长请求

时间:2013-02-15 22:35:09

标签: python flask

我正在制作一个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()的行需要很长时间来处理..并且一切都会停止,直到完成为止? 我该如何处理? 我如何自动刷新到新页面?

1 个答案:

答案 0 :(得分:3)

使用celery这是一个分布式任务队列。 quickstart guide应该让你去。

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

好消息是,自用Python编写以来,很容易与flask(或django或其他任何东西)集成。