如何清除sidekiq的所有工作?

Can*_*Can 101 ruby ruby-on-rails sidekiq

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

Sidekiq::Queue.new.clear
Run Code Online (Sandbox Code Playgroud)

但它给出了以下错误.

NameError: uninitialized constant Sidekiq::Queue 
Run Code Online (Sandbox Code Playgroud)

如何清除sidekiq的所有工作?

jon*_*xto 186

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

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

Sidekiq.redis { |conn| conn.flushdb }

  • 与命令行中的`redis-cli flushdb`相同. (12认同)
  • 这种方法的问题在于,如果您在不同的服务中共享相同的redis/elasticache,那么它也将清除redis db中的所有其他数据. (4认同)
  • 考虑到它的投票,这应该是公认的答案。 (3认同)
  • 你好,布兰迪蒙。您是否使用 redis 来控制项目的会话?因为这些命令是“清理”redis中存储的所有数据,所以相当于关系型数据库中的drop数据库或者drop表。 (2认同)

rus*_*ils 66

清除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
Run Code Online (Sandbox Code Playgroud)

  • 您还可以使用`Sidekiq :: Queue.all.map(&:clear)`清除所有队列...在将语言环境数据库与产品同步时非常有用 (3认同)

小智 57

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

require 'sidekiq/api'
Run Code Online (Sandbox Code Playgroud)


Xav*_*ier 30

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

require 'sidekiq/api'

q = Sidekiq::Queue.new
q.
Run Code Online (Sandbox Code Playgroud)

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

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

  • @codemilan参阅此博客文章:http://blog.honeybadger.io/how-to-clear-all-sidekiq-queues-using-the-power-of-emoji/?utm_source=twitter&utm_medium=social&utm_campaign=blogpost (2认同)

Sai*_*ddy 18

redis-cli flushdb
Run Code Online (Sandbox Code Playgroud)

你也可以使用 redis-cli flushall

  • 这种方法的问题是如果你在不同的服务中共享相同的redis/elasticache,它也会清除db中的所有其他数据. (3认同)

小智 12

require 'sidekiq/api'

Sidekiq::Queue.all.each {|x| x.clear}
Run Code Online (Sandbox Code Playgroud)


fan*_*ing 11

在一行中使用Rails runner

rails runner 'Sidekiq.redis { |conn| conn.flushdb }'
Run Code Online (Sandbox Code Playgroud)


And*_*lko 7

所有Sidekiq任务都保存在“ Redis”中。

您可以通过此命令清除“ Redis”

redis-cli flushall
Run Code Online (Sandbox Code Playgroud)


小智 6

您可以使用它清除所有作业

require 'sidekiq/api'

Sidekiq::Queue.all.each(&:clear)
Run Code Online (Sandbox Code Playgroud)