NEWS
[Gelöst]Python prozess wird nach Zeit X mehrfach ausgeführt.
-
@bananajoe hi und danke für deine Info.
Ich passe den Service mal an und beobachte.
Kann aber erst am Wochenende schauen da ich jetzt unterwegs bin.
-
@wendy2702 was beim Skript so beim mehrmaligen anschauen blöd sein könnte, ist das es beim Start eine MQTT Verbindung zum MQTT Broker aufbaut (Zeile 79 bis 83).
Erhält das Skript den Stopp-Befehl, so wird die Verbindung wieder abgebaut.
Ich sehe nichts was die Verbindung zur Laufzeit prüft, danach wird in der Hauptschleife nur noch gesendet.
Ob das wirklich ein Problem ist, weis ich aber nicht (oder ob derpaho.mqtt.client
das händelt). -
@thomas-braun sagte in Python prozess wird nach Zeit X mehrfach ausgeführt.:
So aus dem Stehgreif würde ich behaupten, das hängt mit der fehlenden Angabe zum Restart zusammen.
Setzt das mal auf always.
Ok.
Das hat @BananaJoe ja auch drin stehen.
Mal meinen Sohn antriggern ob der das schnell ändern kann.
-
@bananajoe sagte in Python prozess wird nach Zeit X mehrfach ausgeführt.:
@wendy2702 was beim Skript so beim mehrmaligen anschauen blöd sein könnte, ist das es beim Start eine MQTT Verbindung zum MQTT Broker aufbaut (Zeile 79 bis 83).
Erhält das Skript den Stopp-Befehl, so wird die Verbindung wieder abgebaut.
Ich sehe nichts was die Verbindung zur Laufzeit prüft, danach wird in der Hauptschleife nur noch gesendet.
Ob das wirklich ein Problem ist, weis ich aber nicht (oder ob derpaho.mqtt.client
das händelt).Das habe ich dank KI auch erfahren aber kann mir nicht vorstellen das es zu mehreren Prozessen führen kann.
Bin aber auch kein Informatiker etc.
-
So,
Hatte vor einigen Tagen den Service geändert:
Unit] Description=Felicity Abfrage service After=network-online.target [Service] Type=simple ExecStart=/usr/bin/python /home/mirko/felicityBMSscript/BMSsnippet_iob_leon.py SyslogIdentifier=felictyabfrage StandardOutput=syslog StandardError=syslog Restart=always [Install] WantedBy=multi-user.target
Heute läuft der Python Prozeß wieder mehrfach.
Sieht hier noch wer einen Fehler oder hat einen anderen Tipp?
-
@wendy2702 kannst du mal ein
/usr/bin/python --version
aufrufen? Und ich hoffe da kommt nicht 2.7 ...
Und wenn der wieder "mehrfach" läuft, gib bitte diesen Befehl ein und poste hier die Ausgabe:
ps -aux |grep python
und beim Service hänge unter das
Restart
dann auch noch diese Zeile:RestartSec=30
damit er ein wenig Pause macht vor einem Neustart.
Ich war schon drauf und dran das Skript anzupassen - aber ich könnte es bei mir ja nicht testen.
Blöd ist, das das Skript ja nicht wirklich auf Start/Stop-Anforderungen reagiert.Hier hat jemand eine schöne Idee dafür vorgeschlagen: https://oxylabs.io/blog/python-script-service-guide
Bei der Lösung reagiert das Skript selbst auf die Anforderungen.
Meine Python-Dienste nutzen alle Flask, ich vermute das hat das schon eingebaut. -
@bananajoe Die Python Version ist:
Python 3.11.2
Service werde ich erweitern und mir den Link mal anschauen.
Danke!
-
@bananajoe sagte in Python prozess wird nach Zeit X mehrfach ausgeführt.:
ps -aux |grep python
Jetzt dachte ich nach einfügen der Restart Zeit würde es funktionieren aber dann sehe ich heute wieder mehrere Prozesse.
@BananaJoe hier mal die gewünschte Ausgabe
mirko@felicity:~ $ ps -aux |grep python root 1833 0.5 2.7 109996 25984 ? Ssl Mar04 31:55 /usr/bin/python /home/mirko/felicityBMSscript/BMSsnippet_iob_leon.py mirko 2482 0.0 0.1 2320 1280 ? Ss Mar04 0:00 /bin/sh -c /usr/bin/python /home/mirko/felicityBMSscript/BMSsnippet_iob_leon.py mirko 2483 0.5 2.7 109996 25996 ? Sl Mar04 28:54 /usr/bin/python /home/mirko/felicityBMSscript/BMSsnippet_iob_leon.py mirko 4229 0.0 0.1 2320 1280 ? Ss Mar05 0:00 /bin/sh -c /usr/bin/python /home/mirko/felicityBMSscript/BMSsnippet_iob_leon.py mirko 4230 0.4 2.6 109020 25044 ? Sl Mar05 20:35 /usr/bin/python /home/mirko/felicityBMSscript/BMSsnippet_iob_leon.py mirko 5979 0.0 0.1 2320 1280 ? Ss Mar06 0:00 /bin/sh -c /usr/bin/python /home/mirko/felicityBMSscript/BMSsnippet_iob_leon.py mirko 5980 0.4 2.6 108996 25032 ? Sl Mar06 12:39 /usr/bin/python /home/mirko/felicityBMSscript/BMSsnippet_iob_leon.py mirko 7714 0.0 0.1 2320 1280 ? Ss Mar07 0:00 /bin/sh -c /usr/bin/python /home/mirko/felicityBMSscript/BMSsnippet_iob_leon.py mirko 7715 0.4 2.6 108996 24892 ? Sl Mar07 5:21 /usr/bin/python /home/mirko/felicityBMSscript/BMSsnippet_iob_leon.py mirko 9345 0.0 0.2 6088 1920 pts/0 S+ 14:53 0:00 grep --color=auto python
-
@wendy2702 der läuft aber ja 1x als
root
und 9x alsmirko
in 2 verschiedenen VariantenDer als
root
ist vermutlich der richtige, der hat auch die niedrigste Prozessnummer.
Also du hast irgendwo noch etwas was weitere Instanzen startet auf 2 wegen.
Daiobroker
nicht der Besitzer ist, der vermutlich nicht.was steht denn in den Cronjobs von
mirko
?crontab -e
-
@bananajoe Bist mein Held für heute.
Es gab von den ersten Versuchen noch einen crontab den ich komplett vergessen hatte.
Denke mit löschen des Eintrags sollte mein Problem jetzt gelöst sein.