Rails后台进程/数据结构

时间:2010-11-18 06:57:05

标签: ruby-on-rails ruby ruby-on-rails-3

我正在运行一个rails应用程序,需要在后台进行连续处理。这个想法是用户以事务方式添加到列表中,该列表位于流程内部,然后根据连续运行的算法配对在一起。

我无法在添加每个用户后简单地运行算法,因为如果用户已经等待了一段时间,我们还需要运行算法。

这可能吗?我基本上需要一个持续运行的数据结构,并在后台的差异时间访问。

谢谢!

3 个答案:

答案 0 :(得分:2)

delayed_job效果很好,并且非常容易集成。你甚至可以随意在后台运行任何东西。它将rails应用程序作为worker加载并将它们保存在内存中,这与不断加载和卸载应用程序的脚本/运行器不同。 DJ看着db寻找工作。我甚至设置了一个站点,其他服务器正在处理与应用服务器分开的后台任务。

答案 1 :(得分:1)

看看Workling和Starling。

答案 2 :(得分:0)

您可以使用cron和/或shell脚本或批处理文件以及rake或Rail的script runner来执行此操作。

使用cron,您可以指定作业运行的间隔,例如每五分钟一次。或者,您可以编写一个在系统启动时启动的脚本,然后休眠一段时间,唤醒并运行代码,然后再次进入睡眠状态,无限循环。

或者您可以在脚本中编写一个循环来运行您的操作然后在内部休眠,再次唤醒和运行,然后再次休眠。

使用Rail script runner的优势在于它可以访问您的Rails应用程序所知道的所有内容。缺点是app需要更长的时间才能启动,因为它必须在每次启动时运行Rails初始化例程,这就是为什么我提到循环执行某些操作然后睡觉。