Reiniciando um programa após exceção
Eu tenho um programa que consulta uma API a cada poucos segundos. Cada resposta aciona algumas funções que, por sua vez, fazem algumas chamadas para sites e tais - chamadas que não quero confiar cegamente para ter sucesso. Se eu pegar uma exceção emfoo()
, por exemplo, ou mesmo em uma função quefoo()
chamadas, é possível reiniciar o programa inteiramente no bloco exceto? Essencialmente, eu quero ligarqueryRepeatedly()
em uma exceção em uma de suas subfunções, sem manter a chamada anterior na pilha.
É claro que eu poderia retornar os valores dos marcadores e resolver isso de outra maneira, mas o programa é estruturado de tal maneira que a abordagem acima parece muito mais simples e mais limpa.
# 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()
Qualquer sugestão é apreciada! Obrigado.