Я не уверен, что чертовски много смысла специально переносить вызов функции дважды. исключение, вероятно, является разумным, и вы переходите к дополнительному этапу повторения этого конкретного исключения. Я имею в виду, что попытка / исключение довольно тесно связана с циклом повторной попытки.
Я обычно так делаю:
def retry_something():
while True:
try:
return something()
except SomeSpecialError:
sleep(10)
while True:
- это действительно то, что вы делаете, вы собираетесь зацикливаться вечно, или, скорее, до тех пор, пока вам действительно не удастся набрать something()
, а затем вернуться Больше нет необходимости в булевом флаге успеха, на что указывает обычный случай оператора return (который вежливо экранирует цикл).