ruby on rails - 如何清除sidekiq的所有工作?

我在Rails应用程序中使用sidekiq作为后台任务。 现在工作的数量变得更多,所以我想清除所有的工作。 我在控制台中尝试了以下命令

Sidekiq::Queue.new.clear

但它给出了以下错误。

NameError: uninitialized constant Sidekiq::Queue 

如何清除sidekiq的所有工作?

Can Can asked 2019-09-10T17:57:24Z
6个解决方案
167 votes

您可以按照问题1077或在本博客noobsippets中报告的方式进行操作

两者都建议我们执行以下操作,并且可以在rails控制台上完成:

Sidekiq.redis { |conn| conn.flushdb }

jonathanccalixto answered 2019-09-10T17:58:15Z
54 votes

清除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
rusllonrails answered 2019-09-10T17:58:39Z
53 votes

根据Github上的这个问题:[https://github.com/mperham/sidekiq/issues/1732]你现在需要

require 'sidekiq/api'
Jay answered 2019-09-10T17:57:38Z
17 votes

截至最新的Sidekiq,只需将其炸掉:

require 'sidekiq/api'

q = Sidekiq::Queue.new
q.💣

是的,清除所有的命令实际上是一个炸弹表情符号。 也适用于q.clear

或者,如果你没有乐趣,你可以使用q.clear

Xavier answered 2019-09-10T17:59:15Z
15 votes
redis-cli flushdb

您也可以使用redis-cli flushall

Sai Ram Reddy answered 2019-09-10T17:59:39Z
7 votes

在一行中使用Rails runner

rails runner 'Sidekiq.redis { |conn| conn.flushdb }'
fangxing answered 2019-09-10T18:00:04Z
translate from https://stackoverflow.com:/questions/24886371/how-to-clear-all-the-jobs-from-sidekiq