Ответ 1
В соответствии с этой проблемой в Github: https://github.com/mperham/sidekiq/issues/1732 вам нужно
require 'sidekiq/api'
Я использую sidekiq для фоновых задач в приложении Rails. Теперь количество заданий становится больше, поэтому я хочу очистить все задания. Я попробовал следующую команду в консоли
Sidekiq::Queue.new.clear
но он дал следующую ошибку.
NameError: uninitialized constant Sidekiq::Queue
Как очистить все задания от sidekiq?
В соответствии с этой проблемой в Github: https://github.com/mperham/sidekiq/issues/1732 вам нужно
require 'sidekiq/api'
Вы можете сделать так, как говорится в выпуске 1077 или как сообщается в этом блоге noobsippets
Оба предполагают, что мы делаем следующее и можем сделать это на консоли rails:
Sidekiq.redis { |conn| conn.flushdb }
Команды Clear Sidekiq Jobs:
require 'sidekiq/api'
# Clear retry set
Sidekiq::RetrySet.new.clear
# Clear scheduled jobs
Sidekiq::ScheduledSet.new.clear
# Clear 'Dead' jobs statistics
Sidekiq::DeadSet.new.clear
# Clear 'Processed' and 'Failed' jobs statistics
Sidekiq::Stats.new.reset
# Clear specific queue
stats = Sidekiq::Stats.new
stats.queues
# => {"main_queue"=>25, "my_custom_queue"=>1}
queue = Sidekiq::Queue.new('my_custom_queue')
queue.count
queue.clear
Начиная с последнего Sidekiq, просто взорвите его:
require 'sidekiq/api'
q = Sidekiq::Queue.new
q.💣
Да, команда, чтобы очистить все это буквально бомба emoji. Также работает для Sidekiq::RetrySet
.
Или, если вам не весело, вы можете использовать q.clear
redis-cli flushdb
Вы также можете использовать redis-cli flushall
Используйте Rails Runner в одну строку
rails runner 'Sidekiq.redis { |conn| conn.flushdb }'
Все задания Sidekiq сохраняются в "Redis".
Вы можете убрать "Redis" этой командой
redis-cli flushall
Вы можете использовать это для очистки всех работ
require 'sidekiq/api'
Sidekiq::Queue.all.each(&:clear)