Radiowecker nach Monaten: OSError: [Errno 12] Cannot allocate memory

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo,

    ich habe seit einigen Monaten einen Radiowecker auf Basis des PI in Betrieb, dessen Python-Script alle paar Monate abstürzt. Nun habe ich das erste mal auch die Fehlermeldung des Scripts:

    Ich nutze MPD/MPC als Player und prüfe mittels isStreamingActive(self) zyklisch mehrmals pro Sekunde, ob der Player aktiv ist und das Streaming läuft. Der relevante Code-Teil sieht so aus:

    Der Fehler trat also beim zyklischen Aufruf von MPC als Subprocess auf. Konkret prüfe ich hier, ob die Ausgabe von MPC den String '[playing]' enthält.

    Nach einigem Googeln habe ich nichts Konkretes gefunden, außer, dass wohl bei jedem popen-Aufruf etwas Speicher für irgendwas reserviert und evtl. nicht mehr freigegeben wird. Wirklich verstanden habe ich das aber nicht. Habe ich an der Stelle irgendwas unsauber umgesetzt? Geht das eleganter?

    Muss ich das Objekt p irgendwie löschen/entsorgen, die PIPE irgendwie schließen?

    Komme ich vielleicht eleganter an den aktuellen Status von MPD? Blöd finde ich hier nämlich auch, dass ich dieses p.wait() in meiner Hauptschleife drin habe. Aber ne bessere Möglichkeit kenne ich nicht.

    Michael

    Einmal editiert, zuletzt von astirfreak (27. Oktober 2018 um 22:38)

  • Radiowecker nach Monaten: OSError: [Errno 12] Cannot allocate memory? Schau mal ob du hier fündig wirst!

  • Die mpd2-Lösung sieht übrigens so aus:

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!