Kann ich ein Python Script automatich neustarten?
Ich habe ein Script was 24/7 laufen soll aber nach ungefähr 6 Stunden kommt ein Error gibt es eine möglichkeit das es automatisch neustartet das Script wenn ein Error kommt? LG
Betriebssystem: Linux (Debian 10)
4 Antworten
Dies kann man so lösen:
def meinskript():
while True:
try:
....
except:
meinskript()
return
meinskript()
Immer wenn ein Fehler auftaucht, führt er die Funktion erneut aus und beendet die aktuelle.
Lass es vom Initsystemd starten. Debian 10 sollte systemd nutzen, das kann dann auch service supervisro spielen udn ihn neu starten.
Besser wäre erstmal herauszufinden, wie es zu dem Fehler kommt.
Kein Befehl. Du schreibst Dir eine eigene Unit (Service), trägst ein, daß Python mit Deinem Skript als Parameter aufgerufen wird und setzt noch ein Restart=always.
Mehr verrät Dir die Dokumentation, bzw.:
man systemd.service
Du kannst auch nach einem Howto o.ä. suchen.
Ist die Service-Datei fertig, packst Du sie in den richtigen Pfad (siehe Doku) und aktivierst sie, wenn sie beim Systemstart starten soll. Sonst halt manuell mit systemctl starten.
---
man systemd.unit
Sollte die Pfade für vom Nutzer bereitgestellte Units auflisten.
OK teste ich aber der Error geht irgendwie nicht zu lösen habe alles gelöscht Neuinstalliert usw. Aber danke teste ich
Du könntest das Script in einer Endlosschleife laufen lassen:
while true; do python3 myScript.py; done
Besser wäre es, die Ursache für den Error zu finden und direkt in dem Python-Script abzufangen.
Ich denke es geht aber wenn ich das mache geht screen nicht weil davor hatte ich screen -AmdS Name python3 Name.py aber das geht nicht mehr
Ich wollte den Fehler beheben aber es hat was mit den API Servern zu tun die ich nicht besitze deswegen kann ich nix ändern aber danke teste ich aus
Du kannst die Exception/den Error ja einfach in deinem Python-Programm auffangen (try/except) und weitermachen. Das wäre die beste Lösung.
Whoops, das sollte vom Init-System heißen. da war der Kopf wohl schon beim zweiten Satz :-O.