Railsアプリケーションのバックグラウンドタスクにsidekiqを使用しています。仕事が増えたので、全部消したい。コンソールで次のコマンドを試しました
Sidekiq::Queue.new.clear
しかし、それは次のエラーを出していました。
NameError: uninitialized constant Sidekiq::Queue
sidekiqからすべてのジョブをクリアするにはどうすればよいですか?
require 'sidekiq'
以前に試す
Railsアプリケーションのバックグラウンドタスクにsidekiqを使用しています。仕事が増えたので、全部消したい。コンソールで次のコマンドを試しました
Sidekiq::Queue.new.clear
しかし、それは次のエラーを出していました。
NameError: uninitialized constant Sidekiq::Queue
sidekiqからすべてのジョブをクリアするにはどうすればよいですか?
require 'sidekiq'
以前に試す
回答:
Github:https : //github.com/mperham/sidekiq/issues/1732のこの問題によると、今する必要があります
require 'sidekiq/api'
問題1077に記載されているように、またはこのブログのnoobsippetsで報告されているように行うことができます。
どちらも以下を実行することをお勧めします。これはRailsコンソールで実行できます。
Sidekiq.redis { |conn| conn.flushdb }
redis-cli flushdb
は、railsサーバーとは別のサーバーでredisを実行している場合よりも予測どおりに機能します。redis-cli flushdb
ホストとポートの引数を含める必要があることを思い出すまで、なぜ動作しないのかと思っていました。
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::Queue.all.map(&:clear)
ますが、PRODとロケールデシベルを同期するとき😅...便利
最新のSidekiqの時点で、それを爆破するだけです:
require 'sidekiq/api'
q = Sidekiq::Queue.new
q.💣
はい、すべてをクリアするコマンドは文字通り爆弾の絵文字です。でも動作しSidekiq::RetrySet
ます。
または、あなたが楽しくなければあなたは使うことができます q.clear
invalid byte sequence in US-ASCII (ArgumentError)
実行に乗りましたq.💣
:/
redis-cli flushdb
あなたも使うことができます redis-cli flushall
Sidekiqのすべてのタスクは「Redis」に保存されます。
このコマンドで「Redis」をクリーンアップできます
redis-cli flushall
これを使用してすべてのジョブをクリアできます
require 'sidekiq/api'
Sidekiq::Queue.all.each(&:clear)
特定のキューからジョブを削除する場合は、次のことを試してください。
queue = Sidekiq::Queue.new("default")
queue.each do |job|
job.klass # => 'TestWorker'
job.args # => ['easy']
job.delete if job.jid == 'abcdef1234567890' || job.klass == 'TestWorker'
end
sidekiqと重要なコンソールについてのすべてを読むcommands- https://medium.com/@shashwat12june/all-you-need-to-know-about-sidekiq-a4b770a71f8f
require 'sidekiq/api'
Sidekiq::Queue.all.each(&:clear)
私はそれがSidekiq.redis { |conn| conn.flushdb }
すべてのキーをredisデータベースから削除することに気づきました。を使用してすべてのsidekiqキューをクリアするより安全な方法がありますredis-cli
。
redis-cli keys "*queue:*" | xargs redis-cli del
Sidekiq APIでも同じことができます(Ravi Prakash Singhの回答を参照)
include 'sidekiq'
前に