非阻塞rails文件下载

时间:2014-08-28 10:01:39

标签: ruby-on-rails ruby sidekiq faye

我遇到的问题是生成大型报告。我正在使用虾宝石获得结果,但我想知道这是否可以迁移到后台进程。

由于我使用faye进行推送通知,而sidekiq用于后台任务,因此可能的解决方案是在sidekiq worker中生成报告,并使用faye通知客户端工作人员的完成情况。这个问题是我没有看到一种优雅地清理生成的文件的方法。我不认为在控制器操作中生成文件是可行的,因为它会导致不合理的加载时间并阻止其他请求。

这个系统可行吗?或者我是以错误的方式思考这个问题?

1 个答案:

答案 0 :(得分:1)

你是对的,这是完全有效的事情。

我不确定您对“清理生成的文件”的含义。如果您的意思是从文件系统中删除,您可以在下载它的控制器中执行此操作,并最终添加一个删除所有剩余文件的每日cron作业。

我们在各种项目中使用过这样的系统。

如果生成时间非常长,则另一个选项是,在生成报告并嵌入报告或链接后,发送电子邮件(如果有的话)。