我正在Rails应用中使用Sidekiq执行后台任务。现在作业数量变得更多了,所以我想清除所有的作业。我在控制台中尝试了以下命令:
Sidekiq::Queue.new.clear
但它会报以下错误。NameError: uninitialized constant Sidekiq::Queue
我该如何清除 Sidekiq 中的所有任务?
我正在Rails应用中使用Sidekiq执行后台任务。现在作业数量变得更多了,所以我想清除所有的作业。我在控制台中尝试了以下命令:
Sidekiq::Queue.new.clear
但它会报以下错误。NameError: uninitialized constant Sidekiq::Queue
我该如何清除 Sidekiq 中的所有任务?
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和重要控制台命令的所有内容- https://medium.com/@shashwat12june/all-you-need-to-know-about-sidekiq-a4b770a71f8f
Sidekiq.redis { |conn| conn.flushdb }
会从redis数据库中删除所有键。有一种更安全的方法可以使用redis-cli
清除所有sidekiq队列:redis-cli keys "*queue:*" | xargs redis-cli del
使用Sidekiq API也可以实现相同的效果(请参见Ravi Prakash Singh回答)
include 'sidekiq'
。 - Benjrequire 'sidekiq'
。 - Uri Agassi