J'ai l'habitude d'utiliser la méthode delay_jobs pour accéder à la console pour voir ce qui se trouve 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!
ruby-on-rails
sidekiq
persévérance
la source
la source
Réponses:
Je n'ai jamais utilisé Sidekiq, il est donc possible qu'il existe des méthodes uniquement pour afficher les tâches en file d'attente, mais elles ne seraient en réalité que des enveloppes autour des commandes Redis, car c'est essentiellement tout ce que Sidekiq (et Resque) est:
Malheureusement, supprimer une tâche spécifique est un peu plus difficile car vous devrez copier sa valeur exacte:
Vous pouvez faire tout cela encore plus facilement via
redis-cli
:la source
Sidekiq::Client.registered_queues
a été remplacé parSidekiq::Queue.all
etSidekiq::Client.registered_workers
parSidekiq::Workers.new
, voir: github.com/mperham/sidekiq/blob/…Il existe une API ergonomique pour visualiser et gérer les files d'attente .
Ce n'est pas obligatoire par défaut.
Voici l'extrait:
Vous pouvez également obtenir des statistiques récapitulatives.
la source
s'il y a un travail planifié. Vous pouvez supprimer tous les travaux à l'aide de la commande suivante:
s'il existe des files d'attente pour lesquelles vous souhaitez supprimer tous les travaux, vous pouvez utiliser la commande suivante:
Retries Jobs peut également être supprimé à l'aide de la commande suivante:
Il y a plus d'informations ici sur le lien suivant, vous pouvez commander: https://github.com/mperham/sidekiq/wiki/API
la source
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
la source
Une solution de contournement consiste à utiliser le module de test (nécessite 'sidekiq / testing') et à vider le worker (MyWorker.drain).
la source
Il y avait des «ouvriers» pendus dans la file d'attente par défaut et j'ai pu les voir via l'interface Web. Mais ils n'étaient pas disponibles depuis la console si j'utilisais Sidekiq :: Queue.new.size
En utilisant redis-cli, j'ai pu les trouver
La solution était:
Aussi dans le Sidekiq v3 il y a une commande
Mais pour une raison quelconque, cela n'a pas fonctionné pour moi ce jour-là
la source
Et si vous voulez effacer la file d'attente de relance sidekiq, c'est ceci:
Sidekiq::RetrySet.new.clear
la source
la source
keys *
en production à moins que vous n'utilisiez ce redis uniquement pour sidekiq. Surtout, ne l'exécutez pas si vous avez un grand ensemble de données (cache, etc.). Redis est mono-thread etkeys *
bloque - cela peut entraîner un temps d'arrêt de plusieurs minutes sur de grands ensembles de données (plusieurs Gbs).Rake tâche pour effacer toutes les files sidekiq:
Usage:
la source