如何返回一个网站并自动重定向到另一个需要很长时间才能加载的网站

时间:2011-09-28 20:49:04

标签: python flask

我要求用户输入一些数据,之后我将他重定向到'结果'网站,这需要几秒钟才能加载。

我不喜欢这个,因为没有用户反馈告诉他,服务器没有崩溃,他的结果即将到来。所以我在考虑向用户显示一个“加载”网站,说明“请稍候”,然后自动将他重定向到“结果”页面。用户会在另一个加载的整个时间内看到“请等待”-website,因为Flask在完成计算之前不会为站点提供服务。

[尝试澄清] 其中一个页面需要很长时间,因为它等待file upload。另一方需要很长时间,因为它的功能等待来自第三方api的数据。

我如何在Flask中做到这一点?

2 个答案:

答案 0 :(得分:2)

我打算为此建议Celery,但是有人刚刚在Flask邮件列表上发布了这个,这可能是一个更简单的解决方案:Hello-Redis-Tasks。如果您仍想使用Celery,那么您应该查看:Custom states in celery

答案 1 :(得分:0)

Flask的文件上传文档包含implementing progress bars for file uploads部分。选择众多客户端解决方案中的一个来显示上传进度,然后在上传完成后重定向。

对于长时间运行的服务器端进程,您有以下几种选择:

  • 从缓慢响应的API中预取(和缓存)数据。
  • 使用JavaScript劫持您的链接操作并对数据发出ajax请求 - 使用状态消息更新DOM,让用户知道一切仍然有效。
  • 有三个步骤。页面#1有一个指向“请稍候...”页面的链接(第2页)。页面#2有一个元刷新标记,指向页面#3(<meta http-equiv="refresh" content="0; url=/path/to/page3">