Mein Raspi hängt sich immer wieder auf (Flightradar24)

  • Ah, merci.


    Ich hab das print für den Status mal dringelassen und das Skript auf der Konsole gestartet. Da kommt die Uhrzeit, dann die Ausgabe von ping und dann der Status.


    Im Logfile kommt aber immer nur die Ausgabe von ping. Und im bisherigen Logfile war das auch so, und dann auf einmal ganz viele Zeilen hintereinander mit dem Status. Was ist da los?


    In der crontab von root habe ich drinstehen:

    Code
    1. @reboot python3 /home/pi/ping-router.py >>/var/log/ping-router.log

    Wo ist der Fehler?


    Edit: Kann ich das denn nicht auch in die systemweite crontab reinschreiben?


    Edit2: Ich glaube, ich weiß jetzt den Grund für das Logfile-Problem. Ich kenne das von Perl. Da muss man die Ausgabepufferung abschalten, damit jede Ausgabe sofort geschrieben wird. Nur weiß ich nicht, wie das in Python geht ...

    Einmal editiert, zuletzt von robo ()

  • Jetzt hat sich das gerade überschnitten, ich habe meinen Post nochmal editiert. Man muss die Ausgabepufferung ausschalten, in Perl geht das mit $|=1, aber wie geht das in Python?


    Edit: Hab's selber gefunden: python3 -u

    Einmal editiert, zuletzt von robo ()

  • Man muss die Ausgabepufferung ausschalten, in Perl geht das mit $|=1, aber wie geht das in Python?

    Da muss ich jetzt ohne zu googeln auch passen.


    Die schönere Lösung finde ich ist aber wie folgt:

    Ausgabeumleitung kannst du nach /dev/null schicken, das Skript loggt jetzt selbst mit, Log wird an dem Ort angelegt wo sich auch das Skript befindet

  • Die schönere Lösung finde ich ist aber wie folgt:

    Hammer! THX!

    Allerdings hat sich da ein Fehler eingeschlichen. Bei write_zustand sind die Ausgaben vertauscht, hab das aber schon umgedreht.

    Mal schaun, ob ich dem Problem so auf die Schliche komme ... ansonsten gab's ja hier noch andere Tips, die ich dann ausprobieren kann ...

  • Allerdings hat sich da ein Fehler eingeschlichen. Bei write_zustand sind die Ausgaben vertauscht,

    Vertauscht nicht, aber ein Fehler trotzdem, ich darf hier natürlich nicht auf True oder False prüfen sondern:

    Python
    1. def write_zustand(status, fehlercounter):
    2. if status == 0:
    3. LOGGER.info("Ziel erreichbar")
    4. else:
    5. LOGGER.info("Ziel nicht erreichbar, Fehlerdurchlauf {} von 5".format(fehlercounter))

    So muss das ganze aussehen.