Sirius3 hat geschrieben: ↑Sonntag 25. Juli 2021, 08:36
Das `break` in `Funktion` funktioniert nicht, weil `Funktion` gar keine Schleife hat.
Wenn ich das Codefragment interpretieren müßte, hast Du eine Funktion, die so lange wiederholt werden soll, bis sie erfolgreich war. Und dieses "Erfolgreich" mußt Du natürlich der Aufrufenden Codestelle mitteilen, per Rückgabewert.
Das mit den 4 Leerzeichen ist mir bewusst. Wieso sind Tabulatoren eigentlich so schlecht?
Das Skript überprüft in der While-Schleife alle 10 Sekunden, ob auf meinem Raspberry Pi noch der Samba-Server läuft und signalisert mit LED das jeweilige Ergebnis.
Dafür habe ich eine Exception definiert, in deren Fall der Server neu gestartet wird.
Eine weitere Exception prüft, ob ein Zugriff auf den Inhalt des Servers funktioniert (Festplatte angeschlossen) und gibt eine Warnmeldung aus.
Noch eine weitere Exception prüft, ob überhaupt ein Samba-Server installiert wurde.
In diesem Fall kann das Skript komplett abgebrochen werden, weil eine weitere Prüfung (nach 10 Sekunden) nutzlos ist.
Ich hatte das Skript extra nur als Pseudo-Code gepostet, da es arg umfangreich ist.
Dein Skript mit meiner Logik angepasst müsste doch dann folgendermaßen lauten, oder?
Code: Alles auswählen
def some_function(Led-Variable):
try:
do_something()
except Server angehalten:
starte Server neu
except kein Server installiert:
print("Abbruch")
return True
return False
while True:
success = some_function(Led-Variable)
if success:
break
print("wait 10 sec...")
sleep(10)
So scheint es zu funktionieren!