Как указать конкретному Delayed :: Job для запуска в консоли?


95

По какой-то причине Delayed :: Job's решил встать в очередь, но ничего не исключить, хотя я перезапускал его несколько раз, даже убил -9 и перезапустил. Он не будет выполнять никаких заданий.

Могу ли я в / console указать конкретную работу и сказать, что она работает?

Пример: .. Delayed::Job.find(x).run


Ответы:


130

отвечая, как запустить конкретное задание с консоли:

Delayed::Job.find(x).invoke_job

но вы должны помнить, что он не будет запускать никаких других вещей, таких как уничтожение уже выполненного задания и т. д. просто выполняю задание / задачу.


4
Внимательно прочтите примечание автора ответа: «он не будет выполнять никаких других действий, таких как уничтожение уже выполненного задания» . Я так говорю, потому что не читал и сходил с ума. Проверьте ответ @ DavidTuite
fguillen

164

Вы также можете сделать это так:

Delayed::Worker.new.run( Delayed::Job.find(x) ) 

Ницца! Спасибо за это!
Поездка

26
это лучший ответ, он удаляет работу после ее завершения. Спасибо
m4risU

12
Delayed :: Worker.new.run (Delayed :: Job.find (id))
март

Превосходно. Согласен с @ m4risU.
Крис Скотт

Я согласен с комментарием @mrt, вы должны убедиться, что выполняете правильную работу
Джонни,

0

На Heroku у меня была "зависшая" работа, и мне просто приходилось бежать, heroku restartчтобы рабочий / задание запускалось снова.


Спасибо за положительный комментарий ;-) Возможно, у человека, который задает этот вопрос, или у людей, которые задают этот вопрос, возникла проблема на Heroku.
rassom
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.