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.
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.
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.
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
Tags und Links python node.js python-2.7 ubuntu process-management