Sidekiq arrêter un seul, travail en cours d'exécution
J'ai donc besoin d'arrêter un de course Emploi dans Sidekiq (3.1.2) par programme, pas prévue. J'ai lu la documentation de l'API, mais n'ai pas vraiment trouver quelque chose à propos de l'annulation de tâches en cours d'exécution. Est-ce possible avec sidekiq?
Quand ce n'est pas possible directement, mon idée était de contourner ce, par le déclenchement d'une exception dans l'emploi quand j'appel le signal, puis en supprimant le travail à partir de la retryset. Ce n'est clairement pas optimal.
Merci d'avance
Comment avez-vous résoudre ce problème? Pourriez-vous partager votre solution de contournement?
Oeil à la FAQ de la première réponse, il explique l'idée vraiment bien. J'ai fait quelque chose de similaire en ajoutant plusieurs points d'arrêt pour effectuer l'action (c'est à dire au début de chaque bloc). C'est assez beaucoup dépend de votre cas d'utilisation, où et quand vous voulez arrêter l'exécution de votre effectuer la méthode
Oeil à la FAQ de la première réponse, il explique l'idée vraiment bien. J'ai fait quelque chose de similaire en ajoutant plusieurs points d'arrêt pour effectuer l'action (c'est à dire au début de chaque bloc). C'est assez beaucoup dépend de votre cas d'utilisation, où et quand vous voulez arrêter l'exécution de votre effectuer la méthode
OriginalL'auteur Figedi | 2014-09-17
Vous devez vous connecter pour publier un commentaire.
Correct, la seule façon de l'arrêter est un travail pour le poste d'arrêter lui-même. Votre demande doit mettre en œuvre cette logique.
https://github.com/mperham/sidekiq/wiki/FAQ#how-do-i-cancel-a-sidekiq-job
ajout d'un lien vers la faq
Wow, j'ai effectivement mis en oeuvre quelque chose de similaire à cette version en utilisant le Redis et le stockage de tous jids dans une table de hachage, puis d'ajouter des points d'arrêt dans mon effectuer la méthode, à chaque fois de vérifier si le courant jid a été définie dans le redis
Toute opposition à l'acte de tuer le thread, comme suggéré dans une autre réponse, quand il est désiré pour interrompre le travail?
Si cette méthode était sûr, vous ne pensez pas Sidekiq permettrait-il?
OriginalL'auteur Mike Perham
Si vous connaissez le long travail en cours d'exécution du Thread ID, il est possible de résilier à partir d'une autre tâche:
Vous pouvez déclencher à partir de la sidekiq_pusher:
Vous aurez besoin de vous connecter le Fil.actuel.object_id de chaque emploi depuis l'INTERFACE utilisateur dosn le montrent pas. Aussi, si vous exécutez distribué sidekiqs, vous aurez besoin pour exécuter cette tâche jusqu'à ce qu'il s'exécute sur la même instance.
object_id.to_s(36)
.OriginalL'auteur AXE-Labs