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


95

З якоїсь причини Delayed :: Job's вирішив поставити в чергу, але нічого не виконати, хоча я перезапустив її кілька разів, навіть вбив -9'д і перезапустив. Він не буде виконувати жодної роботи.

Чи можу я в / console вказати конкретну роботу та сказати їй спрацювати?

Приклад: .. Delayed::Job.find(x).run


можливий дублікат роботи, що повторюється вручну, у Delayed_job
smathy

Відповіді:


130

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

Delayed::Job.find(x).invoke_job

але ви повинні пам'ятати, що він не запустить жодних інших речей, таких як знищення виконаної роботи тощо. просто запуск завдання / завдання.


4
Уважно прочитайте зауваження автора відповіді: "в ньому не буде виконуватися ніяких інших речей, таких як знищення виконаної роботи" . Я так кажу, тому що я не читав його і мені стало божевільно. Перевірте відповідь @ DavidTuite
fguillen

163

Ви також можете зробити це так:

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

Приємно! Дякую за це!
Поїздка

26
це найкраща відповідь, вона видаляє роботу після її виконання. Дякую
m4risU

12
Затримка :: Worker.new.run (затримка :: Job.find (ідентифікатор))
MRT

Відмінно. Погодьтеся з @ m4risU.
Кріс Скотт

Я згоден з коментарем @mrt, вам слід переконатись, що ви виконали правильну роботу
Джонні,

0

На Heroku у мене була "застрягла" робота, і мені просто довелося бігти heroku restartза робітником / роботою, щоб розпочати знову.


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