RnR:长时间运行的过程

时间:2012-06-19 15:45:53

标签: ruby-on-rails statusbar background-process

我的应用程序的一部分创建了一个导出文件。对于绝大多数用户来说,导出文件过程相当快,但是有些用户可以生成10,000或更多记录。这使事情复杂化。首先,导入文件的工具会爆炸大于约4,000条记录的文件。其次,10,000条记录的过程大约需要20分钟。用户倾向于开始做其他事情,然后出于某种原因,该过程似乎超时,他们永远不会得到他们的文件。但是,如果您单击进程按钮,并且只是让您的机器独立,20分钟后您将获得该文件。

我需要让这个更加用户友好和健壮。这是我的想法: 1)自动创建4,000个pop的单独文件 2)为文件生成提供状态栏 3)后台处理过程,以便用户可以点击按钮并在一小时后回来并下载文件

所以我一直在研究背景插件和宝石。大多数人似乎已经过时了,这让我感到紧张,似乎对我所需要的东西来说似乎有些过分。所以Spawn似乎很简单直接,但我不清楚如何为这种类型的产品做一个状态栏。

然后我们有像Delayed_job这样的东西。这似乎可以工作,但似乎有点沉重但它确实提供了钩子来生成某种状态更新。有人有这方面的例子吗?自述文件有点轻松。

另一个问题是文件生成,如何下载这多个文件?无论如何,我可以存储生成的文件用于用户会话的实时?

最后,大多数解决方案看起来都是一个重大变化,这个问题很痛苦但技术上却有效。因此,我被分配来解决它的时间很少,所以我想尝试亲吻。感谢您提供的任何帮助和/或指示。

1 个答案:

答案 0 :(得分:1)

如果您正在寻找后台处理工作,我猜您必须查找resque,它会在redis上运行,而对于delayed_job则会对您的数据库进行轮询更改

根据收集进度信息,我想这里有一堆resque插件可以帮助你quest

最后

Another issue is the file generation, how do I get this multiple files to download? Anyway, I can store the generated file for the live of the user session?

不确定你的意思是什么,但是如果你想要下载多个文件可以帮助