Railsアプリケーションのバックグラウンドタスクにsidekiqを使用しています。今では仕事の数が増えているので、すべての仕事をクリアしたいと思います。コンソールで次のコマンドを試しました
Sidekiq::Queue.new.clear
しかし、次のエラーが発生していました。
NameError: uninitialized constant Sidekiq::Queue
Sidekiqからすべてのジョブをクリアするにはどうすればよいですか?
Githubのこの問題によると、 https://github.com/mperham/sidekiq/issues/1732 必要になりました
require 'sidekiq/api'
issue 1077 で述べられているように、またはこれで報告されているように noobsippetsのブログ
どちらも次のことを行うことを示唆しており、Railsコンソールで実行できます。
Sidekiq.redis { |conn| conn.flushdb }
Sidekiqジョブのクリアコマンド:
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.????
はい、すべてをクリアするコマンドは文字通り爆弾絵文字です。 Sidekiq::RetrySet
でも機能します。
または、面白くない場合は、q.clear
を使用できます
redis-cli flushdb
redis-cli flushall
を使用することもできます
Railsランナーを1行で使用します
Rails runner 'Sidekiq.redis { |conn| conn.flushdb }'
すべてのSidekiqタスクは「Redis」に保存されます。
このコマンドで「Redis」を消去できます
redis-cli flushall
これを使用して、すべてのジョブをクリアできます
require 'sidekiq/api'
Sidekiq::Queue.all.each(&:clear)