LINUX.ORG.RU

Endless try to get url

 ,


0

1

Всем привет. В общем хочу реализовать бесконечную попытку получить данные по url. Вроде бы логично всё и просто, сделал так:

def get_with_delay(url):
    delay = 5
    while True:
        try:
            response = requests.get(url, headers=HEADERS)
        except: # пока ловим всё, что угодно
            logging.info('ConnectionError occurrence')
            logging.info('Sleep for a {} seconds'.format(delay))
            sleep(delay)
            delay += 10
            if delay > 90:
                delay = 5
            continue
        break
    return response
Тут происходит странное:

отключаем интернет, запускаем скрипт. Он как положено попадает в except и всё работает. Включаем интернет — скрипт работает. ОК. Но если я при работающем скрипте отключу интернет то всё просто стопорится на try: request.get. если нажать ctrl+c, то попадаю в блок except и опять тишина. Не могу понять, почему так происходит? Почему при отключении интернета requests не выкидывает какой нибудь exception?

Всё, разобрался. Надо было в get передать timeout адекватный.

conformist ★★★
() автор топика

скорей всего, потому что у тебя «стопорящий» код. твой код, отправив запрос, будет ждать ответа до посинения, застопорив все исполнение. Но я не пистонист, есличо, могу ошибаться:)

noconformism
()

таймаут соединения долгий просто, сетевой стек не знает, что соединение уже всё и программа висит в ожидании ответа от сервера

Harald ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.