Как указать конкретному 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чтобы рабочий / задание запускалось снова.

Rssom
источник
Спасибо за положительный комментарий ;-) Возможно, у человека, который задает этот вопрос, или у людей, которые задают этот вопрос, возникла проблема на Heroku.
rassom