管理Resque和Redis的多个实例

时间:2012-02-14 17:48:52

标签: redis resque god

我试图让上帝监视两个Resque实例,一个用于生产,一个用于分期。

所以我在系统启动时启动了两个Redis实例:redis_6379和redis_6380。

然后我用Daemontools开始监视上帝。

我的上帝脚本看起来像这样:

God.watch do |w|
  w.dir      = "#{rails_root}"
  w.name     = "resque-#{num}"
  w.group    = 'resque'
  w.interval = 30.seconds
  w.env      = {"QUEUE"=>"critical,high,low", "RAILS_ENV"=>rails_env}
  w.start    = "rake resque:work QUEUE='*' RAILS_ENV=#{rails_env}"
  ....
end

我不需要以某种方式将暂存和生产资源转换流程与特定的redis实例相关联吗?

我逐渐把它拼凑在一起,但我想我错过了一个关键部分。

提前致谢

1 个答案:

答案 0 :(得分:2)

首先,您无需在QUEUE中指定RAILS_ENVw.start,因为您已在适当的位置w.env指定了它们。

其次,此脚本在rails_env环境中运行单个resque实例(无论其值是什么)。

我建议这样的事情:

%w(staging production).each do |rails_env|
  God.watch do |w|
    w.dir      = "#{rails_root}" # <= is this path the same for production and staging?
                                 # if not, change accordingly.
    w.name     = "resque-#{rails_env}"
    w.group    = 'resque'
    w.interval = 30.seconds
    w.env      = {"QUEUE"=>"critical,high,low", "RAILS_ENV"=>rails_env}
    w.start    = "rake resque:work"
    ....
  end
end
相关问题