[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