Daemons-Rails:扩展到多个工作者

时间:2015-08-12 10:32:49

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

所以,我已经获得了一个代码库,它使用守护进程,守护程序 - rails和延迟作业来触发/ lib / daemons /中的许多* _ctl文件,但问题在于:

如果两个人做了一个动作,开始守护进程做一些繁重的工作,那么无论哪一个点击秒,都必须等待第一个完成。不好。我们需要在每个队列上启动多个守护进程。

理想情况下,我想要做的是读取这样的配置文件:

default:
  queues: default ordering 
  num_workers: 10
hours:
  queues: slow_admin_tasks
  num_workers: 2
minutes:
  queues: minute
  num_workers: 2

这意味着将启动10个守护程序进程以侦听默认和排序队列,2表示slow_admin任务等。

我如何定义这样的多个守护进程,它看起来可能在以下某个位置:

  • / LIB /守护进程/ * _ CTL
  • / LIB /守护进程/ *。RB
  • / LIB /守护进程/守护程序

我认为这可能是对daemons-rails rake任务的更改,但它们只是点击daemons文件。

有没有人以这种方式调查缩放daemons-rails?我在哪里可以获得更多信息?

1 个答案:

答案 0 :(得分:0)

  1. 我建议您尝试Foreman
  2. 看看this讨论。

    Foreman可以帮助管理Rails应用程序在开发中运行时所依赖的多个进程。您可以在RailsCasts找到有关Foreman的教程。有一个视频教程+一些源代码示例。

    1. 我还建议您查看Sidekiq
    2. Sidekiq允许您将作业移到后台进行异步处理。它使用线程而不是fork,因此与Resque相比,它的内存效率更高。您可以找到教程here

      1. 我还建议您查看Resque
      2. Resque是一个Redis支持的Ruby库,用于创建后台作业,将它们放在多个队列中,以后再处理它们。您可以找到教程here