0

Ich verwende resque Juwel, und ich bin die Jobs durch den folgenden Befehl ausführen:Wie führe ich einen lang laufenden Job auf Amazon EC2-Instanz in Rails aus?

rake resque:work QUEUE='*' 

Aber das Problem ist: Wie meine SSH-Verbindung mit Remote-Server getrennt wird, oder ich schließe die SSH-Sitzung Fenster Wenn der Prozess rake resque:work QUEUE='*' ausgeführt wird, wird die Ausführung des Jobs gestoppt.

Ich möchte einen Weg haben, auf dem der Job unabhängig ausgeführt wird: keine Notwendigkeit, über SSH verbunden zu bleiben. Gibt es einen Weg, oder sollte ich diesem Verfahren folgen, um das zu erreichen, was ich benötige?

Antwort

1

Dazu können Sie Rake-Aufgabe im Hintergrund ausführen. Es gibt mehrere Möglichkeiten, dies zu erreichen. Zwei davon sind hier:

  1. Mit Daemon können Sie eine Rake-Aufgabe im Hintergrund ausführen. Hier ist link für was ist Daemon. Hier ist link, Wie dies für Schienen Rechenaufgaben zu erreichen. Appending & Rake Aufgabe ist meine bevorzugte Art und Weise.

  2. Implementieren Sie einen Cron, um Rake-Task einzeln auszuführen.

+0

Entschuldigung, ich bin neu in diesem Ding: Muss ich * wann immer * gem zu einem Cron leicht laufen lassen? –

+0

Ja, Sie müssen immer Cron auf dem Server einrichten. hast du nicht 'rake resque: work QUEUE = '*' &' versucht. Das sollten Sie ausführen. –

+0

Für die richtige Lösung sollten Sie diese http://stackoverflow.com/questions/26260733/how-to-daemonize-rails-rake-task-on-elastic-beanstalk-start-up lesen. –

3

Eine weitere Möglichkeit Aufgabe im Hintergrund laufen zu lassen: screen. Es erstellt so viele Shell-Sitzungen, wie Sie benötigen, und sie können von Ihrer ersten Sitzung getrennt werden. Run:

screen (Sie in einer neuen Shell-Sitzung sein werden)

/path/to/your/script > /path/to/log_file

Ctrl + A, Strg + D (hier Sie in der ersten Shell-Sitzung zurückkehren, während der Sitzung, die Sie gestartet Ihr Skript wird weiterhin ausgeführt)

Sie können den Fortschritt von tail -f /path/to/log_file überwachen, abmelden und erneut anmelden. Um zu der getrennten Sitzung zurückzukehren, führen Sie screen -r aus.

Wenn Sie screen nicht installiert haben, führen Sie yum install screen. Unsicher über Ubuntu, vielleicht wird es apt-get install screen sein. Führen Sie man screen für weitere Details.