Обработка ошибки при обращению к серверу

Использую библиотеку requests для обращения к серверу и присваиваю переменной определенный скачанный элемент со страницы.

r = requests.get('http://...')

Проблема в том, что сервер нестабилен, и в определенный момент он может быть выключен, из-за чего программа падает. Моей задачей является добавить обработку ошибки, при которой сервер не дает ответа. Например, выражаясь более простым языком - вывести в консоль "Ошибка" если ответа от сервера не последовало, либо просто продолжить исполнение программы в случае ответа сервера.


Ответы (1 шт):

Автор решения: AivanF.

Во-первых, как уже подсказали, изучите в принципе тему ошибок и исключений в Питоне. Затем можно смотреть конкретные исключения, специфические для модуля requests. Обрабатывать их можно например так:

try:
    r = requests.get(url, params={'s': thing})
    # Обработать ответ
except requests.exceptions.Timeout:
    # Вероятно сервер болеет, можно попробовать ретрай через N секунд
except requests.exceptions.TooManyRedirects:
    # Вероятно некорректный URL
except requests.ConnectionError:
    # Нет соединения с сервером

Полезные материалы:

Для построения более грамотной обработки подобных ситуаций, можно использовать специальные модули вроде retry retrying, которые позволяют в декларативном виде через декораторы задавать правила обработки исключений – повторения запросов, их количество, интервалы между повторами и т.п.

→ Ссылка