我正在用sidekiq进行Rails应用程序中的后台任务。现在工作数量增加了,所以我想清除所有工作。我在控制台中尝试了以下命令
Sidekiq::Queue.new.clear
但它给出了以下错误。
NameError: uninitialized constant Sidekiq::Queue
如何清除sidekiq的所有作业?
require 'sidekiq'
在此之前尝试
我正在用sidekiq进行Rails应用程序中的后台任务。现在工作数量增加了,所以我想清除所有工作。我在控制台中尝试了以下命令
Sidekiq::Queue.new.clear
但它给出了以下错误。
NameError: uninitialized constant Sidekiq::Queue
如何清除sidekiq的所有作业?
require 'sidekiq'
在此之前尝试
Answers:
根据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)
... 清除所有队列。当您将区域数据库与产品sync同步时很有用
作为最新的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和重要的控制台命令- 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数据库中删除所有密钥。有一种使用redis-cli
以下方法清除所有sidekiq队列的安全方法:
redis-cli keys "*queue:*" | xargs redis-cli del
使用Sidekiq API可以实现相同的效果(请参阅Ravi Prakash Singh答案)
include 'sidekiq'
在此之前尝试