2014-08-28 46 views
0

我遇到的问题是生成大型报告。我这样做使用虾宝石得到的结果,但我想知道这是否可以迁移到后台进程。非阻塞rails文件下载

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

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

回答

1

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

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

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

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