Wie führe ich ein Python-Skript wie pm2 für nodejs aus?

8

Ich habe pm2 für mein Node.js Skript verwendet und ich liebe es.
Jetzt habe ich ein Python-Skript, das Streaming-Daten auf EC2 sammelt. Manchmal bombardiert das Skript und ich möchte, dass sich ein Prozessmanager wie PM2 neu startet.

Gibt es etwas Ähnliches wie PM2 für Python? Ich habe herumgesucht und konnte nichts finden.

Hier ist mein Fehler

%Vor%

Es ist ein einfaches Datensammelscript

%Vor%

Dass ich möchte, dass es sich einfach neu startet, falls etwas passiert.

    
toy 20.08.2015, 20:31
quelle

4 Antworten

2

UPD: Siehe Antworten unten für bessere Lösungen.

-

Dafür gibt es mehrere Lösungen. Zuerst können Sie Ссылка verwenden, das ein anständiges universelles Prozesssteuerungssystem ist, das viele Funktionen wie zB Autorestart, Neustart enthält Zähler, Protokollierung, flexible Konfiguration und mehr.

Darüber hinaus können Sie Ihre Implementierungslogik einfach in eine Funktion einfügen, sie in try except block ausführen, alle Ausnahmen abfangen und bei Auftreten einer Ausnahme die Funktion erneut ausführen, anstatt das Skript zu beenden. In Ihrem Fall könnte eine solche Funktion das Erstellen von Listener, Authentifizierung und Stream-Part beinhalten.

    
abcdn 20.08.2015, 20:56
quelle
27

Sie können tatsächlich Python-Skripte innerhalb von pm2 ausführen:

%Vor%

Wenn das Skript mit einem .py-Suffix endet, wird standardmäßig ein Python-Interpreter verwendet. Wenn Ihr Dateiname nicht in .py endet, können Sie Folgendes tun:

%Vor%

Ich habe herausgefunden, dass Sie ein wenig vorsichtig sein müssen, welches Python Sie verwenden, besonders wenn Sie ein virtualenv-Python mit einer anderen Version als das Standard-Python auf Ihrem Rechner verwenden.

    
Simon Smith 09.12.2015 21:32
quelle
3

PM2 ist genug, es wird der Interpreter nach dem Suffix laufen:

%Vor%     
Nokey 29.09.2016 02:49
quelle
1

In meinem Fall benutze ich Scrapyd in meinem Projekt. Der ursprüngliche Befehl lautet:

scrapyd --pidfile /var/log/scrapyd/twistd.pid -l /var/log/scrapyd/logs/scrapyd.log

und die pm2-Version ist:

pm2 start scrapyd --interpreter python --watch --name=scrapyd -- --pidfile "/var/log/scrapyd/twistd.pid" -l "/var/log/scrapyd/logs/scrapyd.log"

hoffe dieses Beispiel kann helfen

    
渴望越狱的猫 10.11.2016 13:06
quelle