2013-10-08 1 views
0

У меня есть 5 Resque рабочих установок, как это:Есть ли способ сделать 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

Если они делят одинаковые, все 100 заданий принадлежат одной очереди, то я думаю, что нет – Viren

ответ

0

Ну, когда я пытаюсь выше код с простейшей Resque классовой структуры работника, как это:

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 для этой цели, но похоже, что нет никаких проблем с ним.