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


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.


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

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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.