Resque .. как я могу получить список очередей - PullRequest
4 голосов
/ 12 марта 2012

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

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

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

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

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

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


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

1 Ответ

13 голосов
/ 12 марта 2012

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

получить все очереди в resque довольно просто

Resque.queues

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

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