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

Wyjazd
źródło

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.

schiza
źródło
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) ) 
David Tuite
źródło
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.

rassom
źródło
Dzięki za pozytywny komentarz ;-) Możliwe, że osoba pytająca - lub osoby przychodzące na to pytanie - miały problem z Heroku.
rassom