Jak powiesz konkretnemu Delayed :: Job uruchomić w konsoli?


95

Z jakiegoś powodu Delayed :: Job's zdecydował się ustawić w kolejce, ale niczego nie wykonuje, mimo że kilkakrotnie go restartowałem, a nawet zabił -9'd go i zrestartował. Nie będzie uruchamiać żadnych zadań.

Czy mogę w / console, określić konkretną pracę i nakazać jej pracę?

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


Odpowiedzi:


130

odpowiedź, jak uruchomić konkretne zadanie z konsoli:

Delayed::Job.find(x).invoke_job

ale musisz pamiętać, że nie będzie wykonywać żadnych innych rzeczy, takich jak niszczenie pracy, która została wykonana lub tak dalej. po prostu uruchamiam zadanie / zadanie.


4
Przeczytaj uważnie uwagę autora odpowiedzi: „nie spowoduje to żadnych innych rzeczy, takich jak niszczenie wykonanej pracy” . Mówię tak, bo tego nie przeczytałem i szalałem. Sprawdź odpowiedź @ DavidTuite
fguillen

164

Możesz to również zrobić w ten sposób:

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

Miły! Dziękuję za to!
Wycieczka

26
to najlepsza odpowiedź, która usuwa pracę po jej wykonaniu. Dzięki
m4risU

12
Opóźniony :: Worker.new.run (Opóźniony :: Job.find (id))
mrt

Doskonały. Zgadzam się z @ m4risU.
Chris Scott,

Zgadzam się z komentarzem @mrt, powinieneś upewnić się, że wykonujesz właściwą pracę
Jonny

0

Na Heroku miałem „zablokowaną” pracę i po prostu musiałem biec, heroku restartaby pracownik / praca mogła zacząć od nowa.


Dzięki za pozytywny komentarz ;-) Możliwe, że osoba pytająca - lub osoby przychodzące na to pytanie - miały problem z Heroku.
rassom
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.