当前位置:  开发笔记 > 运维 > 正文

在rails中下载动态生成的大文件

如何解决《在rails中下载动态生成的大文件》经验,为你挑选了1个好方法。

我有一个包含大量行的大型数据库,用户在数据库上生成查询,然后想要导出信息(当前正在执行CSV).问题是,随着我们的数据库不断增长,查询需要很长时间才能下载尝试超时.

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

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



1> bbozo..:

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

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

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

    1名来自会计的用户想要制作他的季度报告捆绑的20份大型报告,不会因为工人用尽而冻结所有流量的网络主机,因此您的CEO仍然可以登录查看他的号码

    你可以减少后台服务上的工作人员数量,因此当第1点的所述用户来访问你时,大型复杂查询不会压倒你的数据库

    文件的服务将由服务器前面的Web服务器或S3完成,而不是工作进程(rails可能很慢)

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有