在Heroku + Django

时间:2017-07-10 19:19:57

标签: django heroku

我在Heroku上运行了一个Django应用程序。用户可以以Excel / PDF格式下载各种报告。其中一些报告可能需要一分钟才能生成,这意味着我需要在后台/工作进程上创建它们。我已经将celi与redis一起设置为消息代理。

我的问题是解决这个问题的最佳方法是什么?到目前为止,这是我的想法。

  1. 用户启动报告后,会立即在页面上显示“正在生成,请稍候”。
  2. 然后该文件生成并保存在临时位置。可能在S3或某种缓存中。
  3. 然后我轮询一个特定的位置,一旦文件准备好,它就会返回文件存储位置的URL。此时,“请稍候”变成一个链接。
  4. 每天一次我使用生命周期规则清除S3存储桶
  5. 我确信这会有效,但它似乎需要付出很多努力而不是最好的用户体验。目前,只要准备好下载对话框,用户就会等待文件。只要文件在30秒内返回,这种方法就可以正常工作,但情况并非总是如此。

    我还考虑过将该文件通过电子邮件发送给用户,但我认为这不是一个好方法。

    有人有更好的建议吗?

1 个答案:

答案 0 :(得分:1)

我当然不会使用电子邮件。

有了这样的话,我从用户体验的角度看不出你的方法有什么问题。在下载开始之前,等待生成文件肯定会超时或等待30秒。

根据用例,您可以(a)提供生成报告之前的估计时间(可能无法实施)和/或(b)让用户登陆报告详细信息的不同页面(可能{{} 3}}使其无缝化。)