Ponowne uruchamianie programu po wyjątku

Mam program, który wysyła zapytania do API co kilka sekund. Każda odpowiedź uruchamia kilka funkcji, które same wywołują pewne połączenia ze stronami internetowymi i takie - połączenia, których nie chcę ślepo ufać, aby odnieść sukces. Jeśli złapię wyjątek wfoo()na przykład, a nawet w funkcji, którafoo() wywołań, czy można ponownie uruchomić program całkowicie w bloku wyjątkiem? Zasadniczo chcę zadzwonićqueryRepeatedly() na wyjątek w jednej z jego podfunkcji, bez utrzymywania poprzedniego wywołania na stosie.

Oczywiście, mogłem zwrócić wartości znaczników i rozwiązać to w inny sposób, ale program jest skonstruowany w taki sposób, że powyższe podejście wydaje się znacznie prostsze i czystsze.

# 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()

Wszelkie sugestie są mile widziane! Dzięki.

questionAnswers(3)

yourAnswerToTheQuestion