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

ニルヴドラムに似ています。resque ワーカーは、redis がまだ実行されておらず、接続を受け入れていない場合、失敗/終了します。

monit (Linux のもの)を使って作業を開始する方法の例については、この要点を確認してください。

Monit は、1 つのサービスが別のサービスに依存することを許可し、.pid ファイルを監視することによってそれらが存続していることを確認します。

于 2011-07-01T17:15:25.113 に答える
0

それは素晴らしいアイデアではないと思います。init スクリプトなどを使用して redis サーバーを起動する必要があります。ただし、本当にこの方法を使用したい場合は、redis:start タスクを変更して nohup を使用し、プロセスをバックグラウンドで実行して、TTY から切断してプロセスを実行し続けることができるようにする必要があります。

于 2011-04-05T16:45:28.020 に答える