Простой способ перезапустить блок try, если происходит конкретное исключение? - PullRequest
0 голосов
/ 27 января 2019

Я использую Python 3.7 и Django и пытаюсь выяснить, как перезапустить блок try, если выбрасывается конкретное исключение.У меня есть

for article in all_articles:
    try:
        self.save_article_stats(article)
    except urllib2.HTTPError as err:
        if err.code == 503:
            print("Got 503 error when looking for stats on " + url)
        else:
            raise

Что бы я хотел, если бы произошла ошибка 503, для повторного запуска раздела в «try» максимум три раза.Есть ли простой способ сделать это в Python?

1 Ответ

0 голосов
/ 27 января 2019

Вы можете превратить это в цикл for и break в случае успешного выполнения блока try:

for article in all_articles:
    <b>for __ in range(3):</b>
        try:
            self.save_article_stats(article)
            <b>break</b>
        except urllib2.HTTPError as err:
            if err.code == 503:
                print("Got 503 error when looking for stats on " + url)
            else:
                raise

Если код ошибки , а не 503, то ошибка возникнет снова, и поток управления выйдет из циклов for.

...