В попытке Python ни до какой ошибки

У меня есть часть кода в Python, который, кажется, вызывает ошибку вероятностно, потому что это получает доступ к серверу и иногда что сервер имеет 500 внутренних ошибок сервера. Я хочу продолжать пробовать, пока я не получаю ошибку. Мое решение было:

while True:
    try:
        #code with possible error
    except:
         continue
    else:
         #the rest of the code
         break

Это походит на взлом мне. Существует ли больше Pythonic способ сделать это?

58
задан 5 January 2011 в 20:08

2 ответа

При повторении из-за ошибки, Вы всегда должны:

  • реализуют предел повторной попытки, или Вы можете быть заблокированы на реализации бесконечного цикла
  • задержка, или Вы будете ковать ресурсы слишком трудно, такие как Ваш ЦП или уже несчастный удаленный сервер

, который простой универсальный способ решить эту проблему при покрытии тех проблем состоял бы в том, чтобы использовать возврат библиотека. Основной пример:

import backoff

@backoff.on_exception(
    backoff.expo,
    MyException,
    max_tries=5
)
def make_request(self, data):
    # do the request

Этот код переносит make_request с декоратором, который реализует логику повторной попытки. Мы повторяем каждый раз, когда наша определенная ошибка MyException происходит с пределом 5 повторений. Экспоненциальная задержка является хорошей идеей в этом контексте, чтобы помочь минимизировать дополнительную нагрузку наше место повторений на удаленном сервере.

0
ответ дан 1 November 2019 в 14:14

что относительно библиотека повторения по pypi? Я использовал его некоторое время, и это делает точно, что я хочу и больше (повторная попытка на ошибке, повторите, когда Ни один, повторите с тайм-аутом). Ниже пример с их веб-сайта:

import random
from retrying import retry

@retry
def do_something_unreliable():
    if random.randint(0, 10) > 1:
        raise IOError("Broken sauce, everything is hosed!!!111one")
    else:
        return "Awesome sauce!"

print do_something_unreliable()
0
ответ дан 1 November 2019 в 14:14

Другие вопросы по тегам:

Похожие вопросы: