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


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.


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

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.


Terima kasih atas komentar positifnya ;-) Bisa jadi orang yang menanyakan - atau orang yang datang ke pertanyaan ini - memiliki masalah di Heroku.
rassom
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.