Neustart eines Programms nach einer Ausnahme

Ich habe ein Programm, das alle paar Sekunden eine API abfragt. Jede Antwort löst ein paar Funktionen aus, die selbst einige Aufrufe von Websites auslösen und solche, denen ich nicht blind vertrauen möchte, um erfolgreich zu sein. Wenn ich eine Ausnahme infoo()Zum Beispiel oder sogar in einer Funktion, diefoo() Aufrufe, ist es möglich, das Programm vollständig im except-Block neu zu starten? Im Wesentlichen möchte ich anrufenqueryRepeatedly() bei einer Ausnahme in einer seiner Unterfunktionen, ohne den vorherigen Aufruf auf dem Stapel zu belassen.

Natürlich könnte ich Markerwerte zurückgeben und dies auf eine andere Weise lösen, aber das Programm ist so strukturiert, dass der obige Ansatz viel einfacher und sauberer erscheint.

# Sample "main" function that I want to call
def queryRepeatedly():
    while True:
        foo()
        bar()
        baz()
        time.sleep(15)

def foo():
    # do something
    try:
        foo2() # makes a urllib2 call that I don't trust
    except:
        #restart queryRepeatedly

queryRepeatedly()

Anregungen sind willkommen! Vielen Dank.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage