99 votes

Comment indiquer à un Delayed::Job spécifique de s'exécuter en console ?

Pour une raison quelconque, Delayed::Job's a décidé de mettre en file d'attente mais de ne rien exécuter, même si je l'ai redémarré plusieurs fois, même si j'ai fait un kill -9 et l'ai redémarré. Il n'exécute aucun travail.

Puis-je, dans /console, spécifier un travail spécifique et lui demander de travailler ?

Ex :.. Delayed::Job.find(x).run

0 votes

170voto

David Tuite Points 5342

Vous pouvez aussi le faire comme ceci :

Delayed::Worker.new.run( Delayed::Job.find(x) )

27 votes

C'est la meilleure réponse, elle supprime un travail après qu'il ait été fait. Merci

12 votes

Delayed::Worker.new.run(Delayed::Job.find(id))

0 votes

Je suis d'accord avec le commentaire de @mrt, vous devez vous assurer que vous exécutez le bon job.

134voto

schiza Points 862

Répondant à la manière d'exécuter un travail spécifique depuis la console :

Delayed::Job.find(x).invoke_job

mais vous devez vous rappeler qu'il n'exécutera pas d'autres choses comme la destruction d'un travail qui a été fait ou ainsi de suite. il ne fait qu'exécuter le travail/tâche.

4 votes

Lisez attentivement la note de l'auteur de la réponse : "il n'exécutera pas d'autres choses comme détruire le travail qui a été fait" . Je le dis parce que je ne l'ai pas lu et je devenais fou. Vérifiez le La réponse de @DavidTuite

0voto

rassom Points 619

Sur Heroku, j'ai eu un travail "bloqué" et j'ai juste dû exécuter heroku restart pour que le travailleur/travailleur puisse recommencer.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X