ruby-on-rails – 在rails中下载动态生成的大文件
我有一个包含大量行的大型数据库,用户在数据库上生成查询,然后想要导出信息(当前正在执行CSV).问题是,随着我们的数据库不断增长,查询需要很长时间才能下载尝试超时.
如何在创建时随时设置Rails来下载文件?这些请求并不常见,所以我不介意对服务器的严厉打击,但它们确实需要是动态的(我不能提前生成文件). 我找到了很多关于如何在Rails中下载文件的网站,但它们要么处理已经创建的文件,要么处理那些没有时间创建的小文件.这些可能是非常大(20MB)的文件,因此他们需要“流式”下载,但我找不到某种方法来做到这一点. 解决方法
我建议使用后台工作服务,如延迟工作或sidekiq for rails,
告诉您的用户他们的报告很快就会准备就绪,并将其安排到后台工作人员服务,在报告生成工作结束时向用户发起通知(websockets,email,…),然后允许用户下载从您使用的任何存储中生成的文件 – 本地,S3等 与流媒体大型响应相比,这有以下好处: > 1名来自会计的用户想要制作他的季度报告捆绑的20份大型报告,不会因工人用尽而冻结所有流量的网络主机,因此您的CEO仍然可以登录查看他的号码>您可以减少后台服务上的工作人员数量,因此当第1点的所述用户访问您时,大型复杂查询不会压倒您的数据库>文件的提供将由服务器前面的Web服务器或S3完成,而不是工作进程(rails可能很慢) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |