3

我想从 rake 任务中启动 redis 和 redis-scheduler,所以我正在执行以下操作:

namespace :raketask do
  task :start do
    system("QUEUE=* rake resque:work &")
    system("rake redis:start")
    system("rake resque:scheduler")
  end
end

问题是 redis 在前台启动,然后这永远不会启动调度程序。如果它不会在后台启动(使用 &)。调度程序必须在 redis 启动并运行后启动。

4

2 回答 2

1

类似于涅盘。如果 redis 尚未运行并接受连接,resque 工作人员将失败/退出。

查看这个要点,了解如何开始使用 monit(linux 的东西)的示例。

Monit 允许一项服务依赖于另一项服务,并通过监视 .pid 文件确保它们保持活动状态。

于 2011-07-01T17:15:25.113 回答
0

我觉得这不是一个好主意。您应该通过初始化脚本或其他方式启动您的 redis 服务器。但是,如果你真的想这样做,你可能需要修改你的 redis:start 任务以使用 nohup 和后台进程,这样你就可以断开与 TTY 的连接并保持进程运行。

于 2011-04-05T16:45:28.020 回答