Hallo zusammen,
ich habe ein Problem mit einem meiner Programme:
ich streame Daten über einen Mosquito MQTT-Broaker, der Server, auf dem der Broaker läuft, macht allerdings jede Nacht um 3 einen Restart, bei diesem restart bricht die Verbindung kurz ab. wenn der Broaker neu startet, schicken meine PIs die Daten munter weiter und lauschen dem Topic auch, allerdings "ignoriert" der Server deren existenz, da sie nicht mehr registriert sind. Ich wollte das Problem lösen, indem ich auf den PIs die Folgende Funktion nutze:
#!/usr/bin/env/ python
import paho.mqtt.client as mqtt
def on_disconnect(client, userdata,rc):
sys.exit()
client=mqtt.Client()
client.connect(...)
client.on_disconnect=on_disconnect
#...
Alles anzeigen
Dadurch soll das Programm beendet werden, sobald die Verbindung unterbricht. (Es wird automatisch neu angestartet, sobald es nicht mehr läuft und erzeugt dann auch dioe Verbindung neu)
Leider funktioniert das nicht... wenn ich statt sys.exit() beispielsweise print('Exit') schreibe, wird dieser Befehl ausgeführt.
Also scheint sys.exit() nicht zu funktionieren.
Ich weiß, dass sys.exit() eine Exception aufruft, und diese theoretisch noch abgefangen werden kann...
Meine Frage wäre folgende: gibt es eine Möglichkeit, das Programm einfach umzuhauen? Also quasi ein dreistes kill -9 in python aufzurufen?
und ja, ich weiß dass man das eigentlich nicht machen soltle, und das man dem PI die möglichkeit nimmt, das Programm ordentlich zu beenden und und und, das müsst ihr mir nicht erzählen
Aber solch einen Befehl benötige ich momentan, ich kenne leider keinen...
Vielen Dank schonmal!