0

我有一个带有 Resque 的 rails 应用程序。如果一个工人失败了,我想杀死所有与模型相关的工人,这产生了那个工人。

我知道我可以得到 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.job每个worker人看看它的结构,这样你就会知道如何检查它的论点是什么。所以它应该是这样的

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 回答