【问题标题】:How to implement download data option for web app如何为 Web 应用程序实现下载数据选项
【发布时间】:2020-06-04 19:43:23
【问题描述】:

我正在为 Web 应用程序(类似字典的应用程序)开发一项功能 - 一个下载选项。这意味着用户可以请求下载(某些型号的)数据。 作为参考,我可以在这里https://wals.info/languoid 提及下载按钮。 我想让我想下载的文件保持最新,它包含数百万条记录。

示例... 我想以某种格式(word、csv 等)下载所有英语单词。查询数据库中的所有内容是不可能的,因为这需要很长时间。

我正在使用带有 postgreDB 的 Django 框架。

你能建议我一些有效的方法吗?

【问题讨论】:

  • 由于数据库中有数据,您通常会安排作业转换为指定格式,然后在完成后发送包含下载链接的电子邮件。这可以接受吗?另一种选择是将查询结果流式传输并即时转换为浏览器响应,但这是对服务器执行 DOS 操作的一种简单方法,并且任何连接中断都将无法恢复。
  • 除了你提到的DOS之外,从数据库中准备所有数据也需要很多时间。我正在考虑保留一些文件作为备份,当我们更新数据库时,我们也会更新文件。我不是 100% 确定这是否有效或有更好的方法......
  • 如果您的数据库大部分是静态的,并且定期更新(而不是不断变化的),那么为文件安排更新任务也是有意义的。这可以通过使用 Celery、RundeckDramatiq 等任务队列的管道/工作流来完成。

标签: django database postgresql dictionary download


【解决方案1】:

我强烈建议检查导入导出模块:

https://django-import-export.readthedocs.io/en/latest/

我认为它有你需要的一切。

【讨论】:

  • 为什么?它什么也没解决,因为他需要先将所有英文单词存储在 postgres 中,然后再导出,这需要更长的时间。
  • @Melvyn 但他提到了 postgres,所以数据已经存在,不是吗?或者我弄错了。
  • "从数据库中查询所有内容是不可能的,因为这需要很长时间。" - 然后转换它 - 它会超时。他真的需要一个队列和可预测但可能是唯一的 url。
  • 数据已经存在,问题是查询数百万行需要花费大量时间,我认为保留一些备份文件并更新它们将是一个好方法。我不确定是否有更好的方法。
  • 在线查询 - 绝对是,但准备带有预定数据库查询的文件对我来说似乎可行。
猜你喜欢
  • 1970-01-01
  • 2013-08-17
  • 2011-07-09
  • 1970-01-01
  • 2011-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多