Если вы когда-либо использовали sidekiq (возможно, вместе с clockwork), вы должны знать, что если каким-то образом происходит сбой демона sidekiq и срабатывает рабочий процесс, задача поставлена ​​в очередь (то есть для конфигурации по умолчанию). Теперь: что делать, если у вас была поминутная задача, sidekiq вылетает, а вы этого не замечали (или не могли среагировать) в течение часа? Это означает, что когда вы снова запустите sidekiq, он начнет с выполнения всех 60 задач, поставленных в очередь.

В моем случае у меня было приложение, с которым я просто дурачился; загрузите некоторые данные Blizzard с их серверов API, возитесь с ними, отображайте. Однако я еще не особо вникал в документацию sidekiq, так как копировал что-то вокруг, проверяя, как это работает и т. д.
Однако каким-то образом sidekiq произошел сбой, но часы продолжали работать; и поставил задачи в очередь. Их тоже много.

Когда я снова запустил демон sidekiq, все полетело к чертям. :) Все воркеры, стоявшие в очереди, разбежались; буквально рабочий флуд.

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

Доступ к товарам (консоль rails):

rails c

загрузить модуль API sidekiq

2.2.2 :001 > require 'sidekiq/api'
 => true

теперь давайте создадим совершенно новую, чистую очередь

2.2.2 :002 > Sidekiq::Queue.new.clear
 => [1, true]

Аааа вот и все. Никаких «устаревших» задач вокруг.

Конечно, лучшим решением было бы настроить clockwork таким образом, чтобы не ставить в очередь работников, пока не запущен sidekiq. Или просто заставить sidekiq очищать очередь при каждой загрузке.