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

Ausflug
quelle
Mögliches Duplikat des manuellen Wiederholungsjobs in Delayed_job
smathy

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.

schiza
quelle
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) ) 
David Tuite
quelle
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.

rassom
quelle
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