我正在制作一个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()的行需要很长时间来处理..并且一切都会停止,直到完成为止? 我该如何处理? 我如何自动刷新到新页面?
答案 0 :(得分:3)
使用celery
这是一个分布式任务队列。 quickstart guide应该让你去。
简而言之,它允许您将任务卸载到在后台运行的工作人员,这样您就不会阻止主用户界面(这是您要阻止的)。
好消息是,自用Python编写以来,很容易与flask(或django或其他任何东西)集成。