dluhhbiu
@dluhhbiu

Как сделать работу нескольких уникальных sidekiq задач внутри одной очереди?

У меня есть sidekiq очередь, в которой выполняются задачи разных пользователей. Один пользователь, своими действиями, за раз может может сгенерировать 15-20 задач и заполнить всю очередь и sidekiq воркер.

Мне необходимо проверять задачу на уникальность параметров и давать возможность выполнять одновременно 3 задачи от одного пользователя.

Я знаю о геме sidekiq-unique-jobs. К сожалению я не смог найти в нем то что нужно мне. while_executing кидает все задачи в очередь выполнения и выполняет их последовательно, но очередь Busy занята. А остальные режут их попадание в sidekiq queue.

Можно ли их как то сохранять в Enqueued, как это делает sidekiq-limit_fetch, только на основе аргументов задачи?
  • Вопрос задан
  • 192 просмотра
Пригласить эксперта
Ответы на вопрос 2
AlexanderMint
@AlexanderMint
Web Developer
Я думаю что Вы должны проверять параметры со своей стороны, прежде чем создавать воркер.
P.S. Можно в redis-e брать/хранить временные данные для сравнения "запускался такой воркер или нет".
Ответ написан
@vsuhachev
При запуске внутри задачи проверять ваши условия и если они не выполняются - прерывать задачу и перепланировать ее в конец очереди (ну или на попозже).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы