Wie weist man einen bestimmten Delayed :: Job an, in der Konsole ausgeführt zu werden?


95

Aus irgendeinem Grund hat Delayed :: Job's beschlossen, sich in die Warteschlange zu stellen, aber nichts auszuführen, obwohl ich es mehrmals neu gestartet, sogar getötet und neu gestartet habe. Es werden keine Jobs ausgeführt.

Kann ich in / console einen bestimmten Job angeben und ihm mitteilen, dass er funktionieren soll?

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


Antworten:


130

Beantworten der Ausführung eines bestimmten Jobs über die Konsole:

Delayed::Job.find(x).invoke_job

Aber Sie müssen sich daran erinnern, dass es keine anderen Dinge wie die Zerstörung von erledigten Arbeiten oder so weiter ausführt. Führen Sie einfach den Job / die Aufgabe aus.


4
Lesen Sie die Anmerkung des Autors der Antwort sorgfältig durch: "Es werden keine anderen Dinge wie die Zerstörung der erledigten Arbeit ausgeführt" . Ich sage es, weil ich es nicht gelesen habe und verrückt geworden bin. Überprüfen Sie die Antwort von @ DavidTuite
fguillen

163

Sie können es auch so machen:

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

Nett! Dank dafür!
Reise

26
Dies ist die beste Antwort. Sie entfernt einen Job, nachdem er erledigt wurde. Danke
m4risU

12
Delayed :: Worker.new.run (Delayed :: Job.find (id))
mrt

Ausgezeichnet. Stimmen Sie mit @ m4risU überein.
Chris Scott

Ich stimme dem Kommentar von @mrt zu, Sie sollten sicherstellen, dass Sie den richtigen Job ausführen
Jonny

0

Auf Heroku hatte ich einen "festgefahrenen" Job und musste einfach laufen, heroku restartdamit der Arbeiter / Job wieder anfängt.


Danke für den positiven Kommentar ;-) Es könnte sein, dass die fragende Person - oder die Leute, die zu dieser Frage kommen - das Problem mit Heroku hatten.
Rassom
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.