Bagaimana Anda memberi tahu Delayed :: Job tertentu untuk dijalankan di konsol?

95

Untuk beberapa alasan, Delayed :: Job's telah memutuskan untuk mengantri tetapi tidak mengeksekusi apa pun meskipun saya telah memulainya kembali beberapa kali, bahkan mematikan -9 dan memulainya kembali. Itu tidak akan menjalankan pekerjaan apa pun.

Dapatkah saya, di / console, menentukan pekerjaan tertentu dan menyuruhnya berfungsi?

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

Perjalanan
sumber
kemungkinan duplikat dari Pekerjaan Ulang Secara Manual di Delayed_job
smathy

Jawaban:

130

menjawab cara menjalankan pekerjaan tertentu dari konsol:

Delayed::Job.find(x).invoke_job

tetapi Anda harus ingat bahwa itu tidak akan menjalankan hal-hal lain seperti menghancurkan pekerjaan yang telah dilakukan atau sebagainya. hanya menjalankan pekerjaan / tugas.

schiza
sumber
4
Bacalah dengan seksama catatan penulis jawaban: "itu tidak akan menjalankan hal-hal lain seperti menghancurkan pekerjaan yang telah dilakukan" . Saya berkata demikian karena saya tidak membacanya dan saya semakin gila. Periksa jawaban @ DavidTuite
fguillen
164

Anda juga bisa melakukannya seperti ini:

Delayed::Worker.new.run( Delayed::Job.find(x) ) 
David Tuite
sumber
Bagus! Terima kasih untuk itu!
Perjalanan
26
ini adalah jawaban terbaik, ini menghapus pekerjaan setelah selesai. Terima kasih
m4risU
12
Tertunda :: Worker.new.run (Tertunda :: Job.find (id))
mrt
Luar biasa. Setuju dengan @ m4risU.
Chris Scott
Saya setuju dengan komentar @mrt, Anda harus memastikan bahwa Anda menjalankan pekerjaan yang benar
Jonny
0

Di Heroku, saya mengalami pekerjaan "macet" dan hanya harus mencalonkan diri heroku restartsebagai pekerja / pekerjaan untuk memulai lagi.

tebusan
sumber
Terima kasih atas komentar positifnya ;-) Bisa jadi orang yang menanyakan - atau orang yang datang ke pertanyaan ini - memiliki masalah di Heroku.
rassom