Frage

Ich verwende das Python-MPD2-Modul, um einen Mediaplayer auf einem Raspberry-Pi in einer GUI-Anwendung zu steuern. Somit möchte ich anmutig Verbindungsfehler und Timeouts behandeln (der betreffende Spieler fällt MPD-Verbindungen nach 60 Sekunden) im Hintergrund. Das MPD-Modul hat jedoch keinen Einzelpunkt des Eintrags, durch den alle Befehle gesendet werden oder Informationen abgerufen werden, die ich patchen könnte.

Ich hätte gerne eine Klasse, die den Zugriff auf alle gleichen Methoden wie mpd.mpdclient ermöglicht, aber wir fügen wir meine eigene Fehlerbehandlung hinzu. Mit anderen Worten, wenn ich es tue:

generasacodicetagpre.

und ein connection-Fehler wird geworfen, ich möchte es fangen und den gleichen Befehl erneut senden. Andere als die geringe Verzögerung, die durch die Verbindung auf den Server wieder verbunden ist, sollte der Benutzer nicht feststellen, dass alles falsch ist.

Bisher ist hier die Lösung, mit der ich gekommen bin. Es arbeitet in meiner Anwendung, erfüllt aber nicht wirklich meine Ziele.

generasacodicetagpre.

Ich könnte dieser Klasse für jeden einzelnen MPD-Befehl eine Methode hinzufügen, z. B.:

generasacodicetagpre.

Dies scheint jedoch weit vom besten Weg, um es zu erreichen.

War es hilfreich?

Lösung

Wenn es Ihnen nichts ausmacht, eine Liste aller 91 Zeichenfolgen zu erstellen534597/2096752 "> Diese Antwort .Ich glaube, dass dieser Ansatz viele Vorteile hat, weil es weniger Magie beinhaltet.

otoh, 91 ist in der Tat viel.Also hier ist eine automagische Lösung, die einen benutzerdefinierten __getattr__ nutzt, der einen Wrapper zurückgibt:

generasacodicetagpre.

Da ich das geschrieben hatte, bemerkte ich @mattoufoutu eine ähnliche Lösung (obwohl es einige Unterschiede gibt).Ich weiß nicht, warum er / er es gelöscht hat ... Wenn diese Antwort unvernachtet wird, würde ich gerne den Kredit geben, der es verdient.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top