Resque: не ставить в очередь избыточные задания?

У меня есть набор очередей Resque, упорядоченных по приоритету. Для всех заданий в очереди с самым низким приоритетом у них нет аргументов, и более поздний запуск заменит все предыдущие запуски, например. они синхронизируют данные с внешней службой. Поэтому нет смысла создавать бэклог с несколькими копиями этих заданий — выполнение его три раза подряд не добавляет ценности.

Но в периоды занятости мы получаем отставание (только в этой очереди), поскольку рабочие заняты более приоритетными заданиями.

Могу ли я предотвратить это отставание, в первую очередь предотвратив постановку в очередь избыточных заданий?


person Eli Rose    schedule 10.09.2017    source источник
comment
Чтобы предотвратить отставание, сначала нужно каким-то образом отследить, что такое же задание уже поставлено в очередь. Потому что resque & redis по умолчанию не предоставляет такого функционала уникальности.   -  person Ketan Doshi    schedule 11.09.2017


Ответы (1)


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

См. https://github.com/resque/resque-loner и https://github.com/neighborland/resque_solo.

person Eli Rose    schedule 13.10.2017