Перезапуск программы после исключения

У меня есть программа, которая запрашивает API каждые несколько секунд. Каждый ответ вызывает несколько функций, которые сами делают несколько звонков на веб-сайты и тому подобное - звонки, которым я не хочу слепо доверять, чтобы добиться успеха. Если я поймаю исключение вfoo(), например, или даже в функции, котораяfoo() звонки, возможно ли перезапустить программу целиком в блоке кроме? По сути, я хочу позвонитьqueryRepeatedly() на исключение в одной из его подфункций, без сохранения предыдущего вызова в стеке.

Конечно, я мог бы вернуть значения маркеров и решить эту проблему по-другому, но программа структурирована таким образом, что вышеуказанный подход кажется намного проще и чище.

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

Любые предложения приветствуются! Благодарю.

Ответы на вопрос(3)

Ваш ответ на вопрос