Comment dire à un Delayed :: Job spécifique de s'exécuter dans la console?

95

Pour une raison quelconque, Delayed :: Job's a décidé de faire la queue mais de ne rien exécuter même si je l'ai redémarré plusieurs fois, même tué -9'd et redémarré. Il n'exécutera aucun travail.

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

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

Voyage
la source
duplication possible du travail de relance manuelle dans Delayed_job
smathy

Réponses:

130

répondre comment exécuter une tâche spécifique à partir de la console:

Delayed::Job.find(x).invoke_job

mais vous devez vous rappeler qu'il n'exécutera aucune autre opération comme la destruction du travail qui a été fait ou ainsi de suite. exécuter simplement le travail / la tâche.

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

Vous pouvez également le faire comme ceci:

Delayed::Worker.new.run( Delayed::Job.find(x) ) 
David Tuite
la source
Agréable! Merci pour ça!
Voyage du
26
c'est la meilleure réponse, cela supprime un travail une fois qu'il est fait. Merci
m4risU
12
Delayed :: Worker.new.run (Delayed :: Job.find (id))
mrt
Excellent. D'accord avec @ m4risU.
Chris Scott
Je suis d'accord avec le commentaire de @mrt, vous devez vous assurer que vous exécutez le bon travail
Jonny
0

Sur Heroku, j'avais un travail "bloqué" et je devais simplement courir heroku restartpour que le travailleur / le travail recommence.

rassom
la source
Merci pour le commentaire positif ;-) Il se peut que la personne qui pose la question - ou les personnes qui viennent à cette question - ait le problème sur Heroku.
rassom le