0

Resque を使用した Rails アプリがあります。1 つのワーカーが失敗した場合、そのワーカーを生成したモデルに関連するすべてのワーカーを強制終了したいと考えています。

Resque.workers を取得できることはわかっていますが、それらを反復処理すると、エンキューされたワーカーに対して :idle が表示されます。

Resque.queues を実行すると、キューが配列として返されます。キューのサイズを取得できますが、待機中のワーカーにアクセスするにはどうすればよいですか?

次のようなものが欲しい:

 parent_id = 999
 Resque.queues.each do |q|
  q.workers.each do |w|
    if w.job.payload.args[0] == parent_id.to_s?
      #kill worker
    end
  end
 end
4

1 に答える 1

0

Resque::Worker.workingすべての非アイドル ワーカーのコレクションを提供する必要があります。それらを繰り返し処理し、shutdown!シャットダウンするワーカーを呼び出すことができます。最初にそれぞれの構造を確認putsするので、その引数が何であるかを確認する方法がわかります。だから、それは次のようなものでなければなりませんworker.jobworker

Resque::Worker.working.each do |worker|
  worker.shutdown! if worker.job["something"]["maybe_something_else"] == parent_id.to_s
end
于 2012-09-23T02:14:06.027 に答える