我有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人)。
是否有选项或类似的东西?
我怎样才能做到这一点?
谢谢
答案 0 :(得分:0)
好吧,当我用最简单的Resque工作者类结构尝试上面的代码时,这样:
class MyWorker
@queue=:test
def self.perform(data)
puts "Testing...."
end
end
100.times do
Resque.enqueue(MyWorker)
end
所有作业都排队等同。
BUT。
当我向工人放几秒钟sleep
时,我发现工作岗位非常公平。
class MyWorker @queue=:test
def self.perform(data)
puts "Testing...."
sleep 3
end
end
我不知道Resque的algorythm是什么用于此目的,但看起来没有问题。