[ruby-on-rails] Sidekiq에서 모든 작업을 지우는 방법은 무엇입니까?
Rails 애플리케이션의 백그라운드 작업에 sidekiq을 사용하고 있습니다. 이제 일자리가 많아 져서 모든 일자리를 지우고 싶습니다. 콘솔에서 다음 명령을 시도했습니다.
Sidekiq::Queue.new.clear
그러나 다음과 같은 오류가 발생했습니다.
NameError: uninitialized constant Sidekiq::Queue
sidekiq에서 모든 작업을 지우려면 어떻게해야합니까?
답변
Github의이 문제에 따르면 : https://github.com/mperham/sidekiq/issues/1732 이제
require 'sidekiq/api'
답변
문제 1077 에 대해 말 하거나 noobsippets 의이 블로그에 보고 된대로 수행 할 수 있습니다.
둘 다 다음을 수행 할 것을 제안하며 Rails 콘솔에서 수행 할 수 있습니다.
Sidekiq.redis { |conn| conn.flushdb }
답변
Sidekiq 작업 지우기 명령 :
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에서 그냥 날려 버리세요 :
require 'sidekiq/api'
q = Sidekiq::Queue.new
q.💣
예, 모두 지우기 명령은 말 그대로 폭탄 이모티콘입니다. 또한 작동합니다 Sidekiq::RetrySet
.
또는 재미가 없다면 사용할 수 있습니다. q.clear
답변
redis-cli flushdb
당신은 또한 사용할 수 있습니다 redis-cli flushall
답변
Rails 러너를 한 줄로 사용
rails runner 'Sidekiq.redis { |conn| conn.flushdb }'
답변
모든 Sidekiq 작업은 “Redis”에 저장됩니다.
이 명령으로 “Redis”를 청소할 수 있습니다.
redis-cli flushall