Ich versuche, einige versuchen/außer Komplexität mit einem Contextmanager zu verstecken. Hier ist ein einfaches Beispiel:Verwendung der Ausbeute zweimal im Contextmanager
from contextlib import contextmanager
import mpd
mpdclient = mpd.MPDClient()
mpdclient.connect("localhost", 6600)
@contextmanager
def mpdcontext():
try:
yield
except mpd.ConnectionError:
mpdclient.connect("localhost", 6600)
with mpdcontext():
mpdclient.status()
with mpdcontext():
mpdclient.lsinfo()
Jetzt, da ich verstanden, der Block in der with-Anweisung ausgeführt wird, wenn Ausbeute aufgerufen wird. In meinem Fall, wenn dies eine Ausnahme auslöst, verbinde ich mich erneut mit mpd. Kann ich den With-Block nach diesem Reconnect irgendwie wieder ausführen?
Dank