Je suis habitué à utiliser la méthode delay_jobs d'aller dans la console pour voir ce qu'il y a dans la file d'attente et la facilité de vider la file d'attente en cas de besoin. Existe-t-il des commandes similaires dans Sidekiq pour cela? Merci!
Réponses
Trop de publicités?Il existe une API pour afficher et gérer les files d'attente .
Ce n'est pas requis par défaut.
require 'sidekiq/api'
Voici l'extrait:
# get a handle to the default queue
default_queue = Sidekiq::Queue.new
# get a handle to the mailer queue
mailer_queue = Sidekiq::Queue.new("mailer")
# How many jobs are in the default queue?
default_queue.size # => 1001
# How many jobs are in the mailer queue?
mailer_queue.size # => 50
#Deletes all Jobs in a Queue, by removing the queue.
default_queue.clear
Vous pouvez également obtenir des statistiques sommaires.
stats = Sidekiq::Stats.new
# Get the number of jobs that have been processed.
stats.processed # => 100
# Get the number of jobs that have failed.
stats.failed # => 3
# Get the queues with name and number enqueued.
stats.queues # => { "default" => 1001, "email" => 50 }
#Gets the number of jobs enqueued in all queues (does NOT include retries and scheduled jobs).
stats.enqueued # => 1051
Je n'ai jamais utilisé Sidekiq, il est donc possible qu'il existe des méthodes que pour la visualisation de la file d'attente des emplois, mais ils seraient vraiment juste être wrappers autour Redis commandes, car c'est fondamentalement tout Sidekiq (et Resque) est:
# See workers
Sidekiq::Client.registered_workers
# See queues
Sidekiq::Client.registered_queues
# See all jobs for one queue
Sidekiq.redis { |r| r.lrange "queue:app_queue", 0, -1 }
# See all jobs in all queues
Sidekiq::Client.registered_queues.each do |q|
Sidekiq.redis { |r| r.lrange "queue:#{q}", 0, -1 }
end
# Remove a queue and all of its jobs
Sidekiq.redis do |r|
r.srem "queues", "app_queue"
r.del "queue:app_queue"
end
Malheureusement, la suppression d'un travail spécifique est un peu plus difficile que vous auriez à copier sa valeur exacte:
# Remove a specific job from a queue
Sidekiq.redis { |r| r.lrem "queue:app_queue", -1, "the payload string stored in Redis" }
Vous pourriez faire tout cela encore plus facilement par d' redis-cli
:
$ redis-cli
> select 0 # (or whichever namespace Sidekiq is using)
> keys * # (just to get an idea of what you're working with)
> smembers queues
> lrange queues:app_queue 0 -1
> lrem queues:app_queue -1 "payload"
si il n'y a aucune tâche planifiée. Vous pouvez supprimer toutes les tâches à l'aide de la commande suivante:
Sidekiq::ScheduledSet.new.clear
si il y a des files d'attente que vous vouliez supprimer tous les travaux, vous pouvez utiliser la commande suivante:
Sidekiq::Queue.new.clear
Les tentatives d'Emplois pourraient être supprimés par la commande suivante aussi:
Sidekiq::RetrySet.new.clear
Il y a plus d'informations ici sur le lien suivant, vous pouvez la caisse: https://github.com/mperham/sidekiq/wiki/API
Il existe une API pour accéder aux informations en temps réel sur les travailleurs, les files d'attente et les travaux.
Visitez ici https://github.com/mperham/sidekiq/wiki/API