如何为排队(尚未工作)的 Resque 工人获取有效负载/参数



我有一个带有Resque的rails应用程序。如果一个工作线程失败,我想杀死所有与模型相关的工作线程,这些工作线程生成了该工作线程。

我知道我可以得到 Resque.workers,但遍历它们将显示 :空闲 对于排队的工人。

执行 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

Resque::Worker.working应该为您提供所有非空闲工作线程的集合。 您可以循环访问它们,并对要关闭的工作线程调用shutdown!。 我将首先为每个worker puts worker.job以查看其结构,以便您知道如何检查其参数是什么。 所以它应该是这样的

Resque::Worker.working.each do |worker|
  worker.shutdown! if worker.job["something"]["maybe_something_else"] == parent_id.to_s
end

最新更新