прокси и таймауты в Requests

Работа с прокси и таймаутами в библиотеке Requests в Python

При взаимодействии с веб-ресурсами может возникнуть необходимость использования прокси-серверов или установки ограничений по времени на запросы. Библиотека Requests предоставляет удобные инструменты для работы с этими функциями.

Настройка прокси-серверов

Прокси-серверы часто используются для обеспечения безопасности, управления трафиком или обхода географических ограничений. В Requests просто установить прокси для запросов.

Пример настройки прокси:

proxies = {
    "http": "http://10.10.10.10:3128",
    "https": "https://10.10.10.10:1080"
}

response = requests.get("https://api.example.com", proxies=proxies)

Если вы планируете использовать прокси постоянно, можете настроить его для всей сессии:

with requests.Session() as session:
    session.proxies = {
        "http": "http://10.10.10.10:3128",
        "https": "http://10.10.10.10:1080"
    }

    response = session.get("https://api.example.com")

Исключения при работе с прокси

При использовании прокси могут возникнуть различные ошибки, такие как:

  • ProxyError: обобщенная ошибка, связанная с прокси;
  • ConnectionError: ошибка при попытке установить соединение;
  • Timeout: ошибка, возникающая при превышении установленного времени ожидания.

Для обработки этих ошибок используйте конструкцию try...except:

try:
    response = requests.get("https://api.example.com", proxies=proxies, timeout=5)
except requests.exceptions.RequestException as e:
    print(f"Произошла ошибка: {e}")

Установка таймаутов для запросов

Таймауты позволяют задать максимальное время ожидания ответа от сервера. Это может быть особенно полезно при работе с ненадежными или медленными ресурсами.

Пример установки таймаута:

response = requests.get("https://api.example.com", timeout=5)

В примере выше запрос будет ждать ответа от сервера максимум 5 секунд. Если сервер не ответит в течение этого времени, будет вызвано исключение requests.exceptions.Timeout.

Также возможно задать отдельные таймауты для подключения и чтения:

# timeout = (соединение, чтение)
response = requests.get("https://api.example.com", timeout=(2, 5))

В этом примере запрос будет пытаться подключиться к серверу в течение 2 секунд, а после установки соединения будет ждать ответа еще 5 секунд.

Заключение

Умение правильно использовать прокси и таймауты позволяет контролировать и оптимизировать взаимодействие вашего приложения с внешними ресурсами. Библиотека Requests облегчает настройку и управление этими функциями, делая ваш код более устойчивым к ошибкам и предсказуемым в поведении.

Содержание: