Повторять запросы пока не будет получен ответ

Рейтинг: 0Ответов: 1Опубликовано: 03.03.2023

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

Мой код:

session = requests.Session()
while True:
   try:
       a = session.get('a.com',timeout=7).json()
       b = session.get('b.com',timeout=7).json()
       c = session.get('c.com',timeout=7).json()
   except Exception:
       while Exception:
       sleep(5)
       a = session.get('a.com',timeout=7).json()
       b = session.get('b.com',timeout=7).json()
       c = session.get('c.com',timeout=7).json()

# тут дальше идет код, взаимодействующий с полученными данными

Ответы

▲ 1Принят
def res(url, session):
    while True:
        try:
            a = session.get(url, timeout=7).json()
            return a
        except Exception:
            sleep(5)

session = requests.Session()
urls = ['a.com', 'b.com', 'c.com']
for url in urls:
    a = res(url, session)