web-dev-qa-db-ja.com

sidekiqからすべてのジョブをクリアする方法は?

Railsアプリケーションのバックグラウンドタスクにsidekiqを使用しています。今では仕事の数が増えているので、すべての仕事をクリアしたいと思います。コンソールで次のコマンドを試しました

Sidekiq::Queue.new.clear

しかし、次のエラーが発生していました。

NameError: uninitialized constant Sidekiq::Queue 

Sidekiqからすべてのジョブをクリアするにはどうすればよいですか?

96
Can Can

Githubのこの問題によると、 https://github.com/mperham/sidekiq/issues/1732 必要になりました

require 'sidekiq/api'
57
Jay

issue 1077 で述べられているように、またはこれで報告されているように noobsippetsのブログ

どちらも次のことを行うことを示唆しており、Railsコンソールで実行できます。

Sidekiq.redis { |conn| conn.flushdb }

182

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
60
rusllonrails

最新のSidekiqの時点で、それを爆破するだけです。

require 'sidekiq/api'

q = Sidekiq::Queue.new
q.????

はい、すべてをクリアするコマンドは文字通り爆弾絵文字です。 Sidekiq::RetrySetでも機能します。

または、面白くない場合は、q.clearを使用できます

25
Xavier
redis-cli flushdb

redis-cli flushallを使用することもできます

17
Sai Ram Reddy

Railsランナーを1行で使用します

Rails runner 'Sidekiq.redis { |conn| conn.flushdb }'
10
fangxing

すべてのSidekiqタスクは「Redis」に保存されます。

このコマンドで「Redis」を消去できます

redis-cli flushall
5

これを使用して、すべてのジョブをクリアできます

require 'sidekiq/api'

Sidekiq::Queue.all.each(&:clear)
3