Frage

habe ich Delayed_job in der Vergangenheit verwendet. Ich habe ein altes Projekt, dass läuft auf einem Server, auf das ich nicht von Ruby 1.8.6 bis 1.8.7 aktualisieren kann, und kann daher nicht Job Verzögerte verwenden, so versuche ich, BackgroundJobs http://codeforpeople.rubyforge.org/svn/bj/trunk/README

Ich habe es funktioniert, so dass mein Job läuft, aber etwas scheint nicht richtig. Zum Beispiel, wenn ich den Job wie folgt ausführen:

jobs = Bj.submit "echo hi", :is_restartable => false, :limit => 1, :forever => false

Dann sehe ich den Job in dem bj_job Tisch und ich sehe, dass es zusammen mit ‚hallo‘ in stdout abgeschlossen. Ich habe auch nur einen Job in der Tabelle sehen und es nicht hält sie erneut ausgeführt wird.

Aus irgendeinem Grund, wenn ich dies tun:

jobs = Bj.submit "./script/runner ./jobs/calculate_mean_values.rb #{self.id}", :is_restartable => false, :limit => 1, :forever => false

Der Auftrag abgeschlossen ist immer noch wie erwartet, jedoch hält es neue Zeilen in der bj_job Tabelle einfügen, und das Verfahren wird läuft immer wieder, bis ich meinen Dev-Server stoppen. Ist das, wie es soll funktionieren?

Ich bin mit Ruby 1.8.6 und Rails 2.1.2 und ich habe nicht die Möglichkeit, ein Upgrade. Ich verwende den Plugin Geschmack von Bj.

Weil ich brauche nur den Prozess läuft weiter, sobald nach dem Modell gespeichert ist, ich habe es funktioniert, indem Sie direkt Skript / Läufer wie folgt aus:

system " RAILS_ENV=#{RAILS_ENV}   ruby  #{RAILS_ROOT}/script/runner   'CompositeGrid.calculate_values(#{self.id})'  & "

Aber würde gerne wissen, ob ich etwas falsch mit Hintergrundjobs mache,

War es hilfreich?

Lösung

OK, das war dumm Benutzerfehler. Wie sich herausstellte, hatte ich einen Anruf zurück, die den Prozess und die Schaffung einer Endlosschleife wurde neu gestartet wird. Nach dem Fixieren sie den Anruf zurück genau wie erwartet funktioniert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top