Como você informa um Delayed :: Job específico para ser executado no console?

95

Por alguma razão, Delayed :: Job's decidiu colocar na fila, mas não executar nada, embora eu tenha reiniciado várias vezes, até mesmo matado -9 e reiniciado. Ele não executará nenhum trabalho.

Posso, no / console, especificar um trabalho específico e dizer para ele funcionar?

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

Viagem
fonte

Respostas:

130

respondendo como executar um trabalho específico do console:

Delayed::Job.find(x).invoke_job

mas você deve se lembrar que ele não executará nenhuma outra coisa, como destruir o trabalho que foi feito ou assim por diante. apenas executando o trabalho / tarefa.

Schiza
fonte
4
Leia atentamente a nota do autor da resposta: "ele não executará nenhuma outra coisa, como destruir o trabalho que foi feito" . Digo isso porque não li e estava ficando louco. Verifique a resposta do
@DavidTuite
163

Você também pode fazer assim:

Delayed::Worker.new.run( Delayed::Job.find(x) ) 
David Tuite
fonte
Agradável! Obrigado por isso!
Viagem em
26
esta é a melhor resposta, remove um trabalho depois de concluído. Obrigado
m4risU
12
Delayed :: Worker.new.run (Delayed :: Job.find (id))
março de
Excelente. Concordo com @ m4risU.
Chris Scott
Eu concordo com o comentário de @mrt, você deve certificar-se de executar o trabalho correto
Jonny
0

No Heroku eu tive um trabalho "travado" e apenas tive que correr heroku restartpara o trabalhador / trabalho começar novamente.

rassom
fonte
Obrigado pelo comentário positivo ;-) Pode ser que a pessoa que fez a pergunta - ou as pessoas que fizeram essa pergunta - teve o problema no Heroku.
rassom