0

我有 5 个这样的 Resque 工作人员设置:

QUEUE=* rake environment resque:work
QUEUE=* rake environment resque:work
QUEUE=* rake environment resque:work

当我像这样从事繁重的工作时:

100.times do 
Resque.enqueue(DoTheJob)
end

第一个工人得到大约 80 份工作,其他工人分担剩下的……

就我而言,我可能有 40 个并发且非常繁重的工作——视频转码——。它们将被连续触发,我希望将工作平等地或至少公平地分配给我现有的工人(他们最多可以有 30 个)。

有没有选择或类似的东西?

我怎样才能做到这一点?

谢谢

4

1 回答 1

0

好吧,当我用一个最简单的 Resque worker 类结构尝试上面的代码时,如下所示:

class MyWorker 
@queue=:test

def self.perform(data)

puts "Testing...."

end

end

100.times do 
Resque.enqueue(MyWorker)
end

所有作业都排队到同一个工人。

但。

当我给工人几秒钟sleep的时间时,我发现工作受到相当公平的干扰。

class MyWorker @queue=:test

def self.perform(data)

puts "Testing...."
sleep 3
end

end

我不知道 Resque 为此目的的算法是什么,但看起来没有问题。

于 2013-10-09T12:18:55.673 回答