Перезапуск программы после исключения
У меня есть программа, которая запрашивает 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()
Любые предложения приветствуются! Благодарю.