11 Stimmen

Wiederholung von Python-Funktionsaufrufen bei Ausnahmen?

Hallo zusammen, ich arbeite an einem Daten-Scraping-Projekt und ich bin auf der Suche nach einer sauberen Möglichkeit, einen Funktionsaufruf zu wiederholen, wenn eine Ausnahme ausgelöst wird.

Pseudocode:

try:
    myfunc(x)
except myError:
    ###try to call myfunc(x) again Y number of times, 
        until success(no exceptions raised) otherwise raise myError2

Mir ist klar, dass dies nicht die beste Vorgehensweise ist, aber ich arbeite mich durch eine Reihe von verschiedenen Code-/Netzwerkschichten, die nicht zuverlässig sind, und ich kann sie realistischerweise nicht debuggen.

Im Moment erreiche ich dies mit einer großen Anzahl von Versuchen \except Blöcke, und mir bluten die Augen.

Elegante Ideen gefällig?

0voto

Elalfer Punkte 5186

Versuchen Sie folgendes Snippet:

while True:
    try:
        func()
        break
    except:
        print "Error. Gonna try again"

Es ist jedoch besser, die Anzahl der Wiederholungsversuche zu begrenzen.

0voto

inspectorG4dget Punkte 103745
success = False
attempts = 0
while not success and attempts < 10: # or however many times you want to attempt
    try:
        functionCall()
        success = True
    except:
        i += 1
if not success:
    raise functionCallFailedError

Ich hoffe, das hilft

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X