#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
Комментариев нет:
Отправить комментарий