¿Cómo le dices a un Delayed :: Job específico que se ejecute en la consola?

95

Por alguna razón, Delayed :: Job's ha decidido hacer cola pero no exceder nada a pesar de que lo he reiniciado varias veces, incluso lo maté y lo reinicié. No ejecutará ningún trabajo.

¿Puedo, en / console, especificar un trabajo específico y decirle que funcione?

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

Viaje
fuente
posible duplicado del trabajo de reintento manual en Delayed_job
smathy

Respuestas:

130

respondiendo cómo ejecutar un trabajo específico desde la consola:

Delayed::Job.find(x).invoke_job

pero debe recordar que no ejecutará ninguna otra cosa, como destruir el trabajo que se hizo, etc. simplemente ejecutando el trabajo / tarea.

esquiza
fuente
4
Lea atentamente la nota del autor de la respuesta: "no ejecutará ninguna otra cosa como destruir el trabajo que se hizo" . Lo digo porque no lo leí y me estaba volviendo loco. Verifique la respuesta de @ DavidTuite
fguillen
163

También puedes hacerlo así:

Delayed::Worker.new.run( Delayed::Job.find(x) ) 
David Tuite
fuente
¡Agradable! ¡Gracias por eso!
Viaje
26
esta es la mejor respuesta, elimina un trabajo una vez hecho. Gracias
m4risU
12
Demorado :: Worker.new.run (Demorado :: Job.find (id))
mrt
Excelente. De acuerdo con @ m4risU.
Chris Scott
Estoy de acuerdo con el comentario de @mrt, debe asegurarse de ejecutar el trabajo correcto
Jonny
0

En Heroku tuve un trabajo "atascado" y tuve que correr heroku restartpara que el trabajador / trabajo comenzara de nuevo.

rassom
fuente
Gracias por el comentario positivo ;-) Podría ser que la persona que pregunta, o las personas que vienen a esta pregunta, tengan el problema en Heroku.
rassom