J'utilise sidekiq pour les tâches en arrière-plan dans l'application Rails. Maintenant, le nombre de tâches devient plus important. Je souhaite donc supprimer toutes les tâches. J'ai essayé la commande suivante dans la console
Sidekiq::Queue.new.clear
mais c'était donner l'erreur suivante.
NameError: uninitialized constant Sidekiq::Queue
Comment puis-je effacer tous les travaux de sidekiq?
Selon ce numéro sur Github: https://github.com/mperham/sidekiq/issues/1732 vous devez maintenant
require 'sidekiq/api'
Vous pouvez faire ce qui est dit sur le numéro 1077 ou comme indiqué dans ce blog à noobsippets
Les deux suggèrent que nous fassions ce qui suit et que nous pouvons le faire sur la console Rails:
Sidekiq.redis { |conn| conn.flushdb }
Effacer les commandes de 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
À compter de la dernière édition de Sidekiq, il suffit de l'exploser:
require 'sidekiq/api'
q = Sidekiq::Queue.new
q.????
Oui, la commande de tout effacer est littéralement une bombe emoji. Fonctionne également pour Sidekiq::RetrySet
.
Ou si vous n'êtes pas amusant, vous pouvez utiliser q.clear
redis-cli flushdb
Vous pouvez aussi utiliser redis-cli flushall
Utilisez Rails coureur sur une ligne
Rails runner 'Sidekiq.redis { |conn| conn.flushdb }'
Toutes les tâches Sidekiq sont enregistrées dans "Redis".
Vous pouvez nettoyer "Redis" avec cette commande
redis-cli flushall
Vous pouvez l'utiliser pour effacer tous les travaux
require 'sidekiq/api'
Sidekiq::Queue.all.each(&:clear)