加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 在rails中下载动态生成的大文件

发布时间:2020-12-17 02:49:01 所属栏目:百科 来源:网络整理
导读:我有一个包含大量行的大型数据库,用户在数据库上生成查询,然后想要导出信息(当前正在执行CSV).问题是,随着我们的数据库不断增长,查询需要很长时间才能下载尝试超时. 如何在创建时随时设置Rails来下载文件?这些请求并不常见,所以我不介意对服务器的严厉打击,
我有一个包含大量行的大型数据库,用户在数据库上生成查询,然后想要导出信息(当前正在执行CSV).问题是,随着我们的数据库不断增长,查询需要很长时间才能下载尝试超时.

如何在创建时随时设置Rails来下载文件?这些请求并不常见,所以我不介意对服务器的严厉打击,但它们确实需要是动态的(我不能提前生成文件).

我找到了很多关于如何在Rails中下载文件的网站,但它们要么处理已经创建的文件,要么处理那些没有时间创建的小文件.这些可能是非常大(20MB)的文件,因此他们需要“流式”下载,但我找不到某种方法来做到这一点.

解决方法

我建议使用后台工作服务,如延迟工作或sidekiq for rails,

告诉您的用户他们的报告很快就会准备就绪,并将其安排到后台工作人员服务,在报告生成工作结束时向用户发起通知(websockets,email,…),然后允许用户下载从您使用的任何存储中生成的文件 – 本地,S3等

与流媒体大型响应相比,这有以下好处:

> 1名来自会计的用户想要制作他的季度报告捆绑的20份大型报告,不会因工人用尽而冻结所有流量的网络主机,因此您的CEO仍然可以登录查看他的号码>您可以减少后台服务上的工作人员数量,因此当第1点的所述用户访问您时,大型复杂查询不会压倒您的数据库>文件的提供将由服务器前面的Web服务器或S3完成,而不是工作进程(rails可能很慢)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读