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


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.


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) ) 

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.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.