@meim

Как продолжить выполнение программы Python при ошибке в цикле FOR?

Нужно, чтобы при любой ошибке в любой из функций - выждать 5 сек и продолжить выполнение, не переходя на следующий цикл, с тем же ftid.
Сейчас, в случае ошибки, будет пропуск отработки функций с этим ftid.
Как сделать максимально правильно.
for ftid in range(begin_ftid, end_ftid):
        try:
           f1(ftid)
           f2(ftid)
           f3(ftid)
              
        except Exception:
            time.sleep(5)
            pass
  • Вопрос задан
  • 1024 просмотра
Решения вопроса 1
@o5a
for ftid in range(begin_ftid, end_ftid):
    while True:
        try:
            f1(ftid)
            f2(ftid)
            f3(ftid)

        except Exception:
            time.sleep(5)
            continue
        break
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
SoreMix
@SoreMix Куратор тега Python
yellow
Оберунуть каждую функцию в try ... except, либо внутри самих функций добавить то же самое
Ответ написан
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Я бы сделал так: программа работает пока очередь не пуста, в очередь складываются обьекты со следующими параметрами

I’d
Retrycount
Delay
Status

Если что пошло не так то в обработчике эксепшена ставится статус ошибки и уменьшается количество попыток. Ну и ставиться время через которое попробовать. Цикл бесконечный, но с условием выхода по окончании очереди или при 0 количестве повторов. Дополнительно можно добавить на каждую попытку сообщение об ошибке и при выходе отображать их.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
17 апр. 2024, в 00:31
1000 руб./за проект
17 апр. 2024, в 00:13
800 руб./за проект
17 апр. 2024, в 00:06
240000 руб./за проект