Страницы

Поиск по вопросам

воскресенье, 8 марта 2020 г.

Как зациклить функцию, чтобы ее выполнение являлось гарантированным

#python #python_3x #циклы #исключения


Программа обращается к сети интернет для получения данных из списка исходных ID.
Ночью интернет частенько отваливается, что приводит к ошибке программы.
Как добиться безаварийной работы программы, чтобы элемент списка был обработан гарантированно?
Что нужно написать после except:, чтобы программа повторно обращалась к блоку try:,
покуда его не обработает с корректным получением результата y.

data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

def Scan_data(x):
    try:
        y = <..Обращение к интернету..>
    except:
        time.timesleep(60)
        # <..Тут не знаю что написать..>
    return y

for i in data:
    Scan_data(i)

    


Ответы

Ответ 1



Вот где то так. Я также добавил счетчик неуспешних попыток. Если было больше 1000 попыток, то не ведомо, если ли смысл продолжать. data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] def Scan_data(x): y = -1 happy = false tr = 0 # сколько раз пробовали while (!happy and tr < 1000): try: y = <..Обращение к интернету..> happy = true # как только поняли, что все ок except: time.timesleep(60) tr = tr + 1 # кол-во попыток print("попытка номер ", tr) return y for i in data: Scan_data(i)

Ответ 2



Я бы написал так def Scan_data(x): try: y = ... return y except: return None for i in data: while Scan_data(i) is None: time.timesleep(60)

Ответ 3



Примените рекурсию: def Scan_data(x): try: y = <..Обращение к интернету..> except: time.timesleep(60) Scan_data(x) return y

Комментариев нет:

Отправить комментарий