2012-03-12 2 views
4

Ok .. На heroku У меня есть 24 рабочих (как я понимаю) Я говорю 1000 клиентов. Каждый со своей собственной «схемой» в базе данных postgresql.Resque .. как я могу получить список очередей

У каждого клиента есть задачи, которые могут быть выполнены «позже» .. отправка заказов моим компаниям завершена, это отличный пример.

Я думал, что могу создать новую очередь для каждого клиента, и каждая очередь будет иметь свой собственный рабочий (процесс). Кажется, что это не в карточках.

Так хорошо .. мое мышление сейчас, чтобы иметь поле очереди в записи о клиенте .. поэтому клиент 1 по 15 в queue_a и клиентом 16 через 106 в queue_b .. ЭСТ Если один клиент использует куч, мы могли бы переместить их в новую очередь или вывести других из медленной очереди. клиенты с низкими воланами могут быть собраны .. Это было бы балансирующим актом, но с этим было бы трудно справиться, если бы мы отслеживали показатели (которые мы будем в любом случае)

(любые встречные идеи быть потрясающим, чтобы услышать, я действительно в фазе шара)

Прямо сейчас. Я хотел бы выяснить, как создать рабочего для каждой очереди. https://gist.github.com/486161 рассказывает мне, как создать X-работников, но на самом деле не позволяет мне установить рабочего в очередь. Если бы я знал это и как получить список очередей, я думаю, что буду на пути к жизнеспособному решению ограничений.


Чтение на
http://blog.winfieldpeterson.com/2012/02/17/resque-queue-priority/
Я понимаю, что мой план чреват трудностями .. Первый клиент/очередь добавьте к рабочему, получите приоритет. Я не хочу этого, я бы хотел, чтобы все они были одинаковыми. До тех пор пока они являются частью одной и той же очереди ..

ответ

10

я просто придерживаться темы :)

получить все очереди в Resque довольно легко

Resque.queues 

является список имен всех очередей она не включает в себя «не удались» очереди, я сделал что-то вроде этого

(['failed'] + Resque.queues).each do |queue| 
    queue_size = queue=='failed' ? Resque::Failure.count : Resque.size(queue) 
end 
+0

Спасибо груды людей .. Я не уверен, что это лучший подход, но это позволит мне иметь рабочий для каждого дия .. Я мог бы расширить свое мышление до га у вас больше одной очереди на одного работника, но это будет только приоритет. – baash05

+0

Знаете ли вы, что очереди отсортированы по альфа? – baash05

+0

[В вызове 'Redis.queues'] (https://github.com/resque/resque/blob/8a8fd83f1f32755734f0068d9f211aeb2fda1f9e/lib/resque.rb#L253) используется [SMEMBERS] (http://redis.io/ команды/SMEMBERS) на Redis. Поскольку Redis является кеш-ключом/хранилищем для ключей, предназначенным для скорости, SMEMBERS не пытается сортировать элементы набора. Поэтому ответ на вопрос @ baash05 - нет. – sameers

Смежные вопросы