Repolode
ross

ross/requests-futures

Небольшое дополнение к библиотеке Python requests для асинхронной отправки HTTP-запросов с помощью concurrent.futures.

Звёзды
2,222
Форки
158
Открытые issues
1
Последний коммит
16 дней назад

Что это?

requests-futures добавляет асинхронный интерфейс к популярной библиотеке Python requests. Вместо того чтобы ждать завершения каждого вызова, FuturesSession возвращает объекты Future: запросы выполняются в фоне, а когда нужен ответ, можно вызвать result(). В остальном API совпадает с requests.Session, но исключения возникают при вызове result(), а не в момент отправки запроса.

По умолчанию сессия использует ThreadPoolExecutor с 8 рабочими потоками. Вместо него можно передать ProcessPoolExecutor для параллельного выполнения в отдельных процессах. При закрытии сессии как контекстного менеджера отменяются запросы в очереди, выполнение которых ещё не началось. К объектам Future можно прикреплять дополнительные данные. Вместо устаревшего background_callback библиотека предоставляет hooks.

По умолчанию исполнитель использует один requests.Session на все рабочие потоки. Поскольку Session не потокобезопасен, при изменении общих cookies или заголовков во время выполнения запросов нужно соблюдать осторожность. Требуется Python версии 3.10 или новее.

Ключевые возможности

  • 01Возвращает объекты Future через знакомый API requests.Session.
  • 02По умолчанию использует ThreadPoolExecutor с 8 рабочими потоками и поддерживает ProcessPoolExecutor.
  • 03При закрытии сессии отменяет запросы в очереди, выполнение которых ещё не началось.
  • 04Позволяет прикреплять к объектам Future пользовательские данные, чтобы отслеживать, какой запрос к ним относится.
  • 05Поддерживает hooks вместо устаревшего background_callback.

Сценарии использования

  • Параллельная загрузка множества независимых URL из скрипта на Python.
  • Добавление фоновых HTTP-вызовов в существующий код на requests с минимальными изменениями.
  • Выполнение больших пакетов запросов в случаях, когда для каждого запроса важно снизить потребление памяти и поэтому нужен пул процессов.

Быстрый старт

  1. 1

    Установите пакет с помощью pip

    pip install requests-futures
  2. 2

    Создайте FuturesSession и отправьте запросы; вызовите result() для каждого future, чтобы получить ответ

Что важно знать

  • Требуется Python 3.10 или новее.
  • Исполнитель по умолчанию использует один requests.Session в нескольких потоках, хотя он не является потокобезопасным.
  • Лицензия не указана явно в метаданных проекта.

Темы

Частые вопросы

Что такое requests-futures?
Небольшое дополнение к библиотеке Python requests для асинхронной отправки HTTP-запросов с помощью concurrent.futures. requests-futures добавляет асинхронный интерфейс к популярной библиотеке Python requests. Вместо того чтобы ждать завершения каждого вызова, FuturesSession возвращает объекты Future: запросы выполняются в фоне, а когда нужен ответ, можно вызвать result(). В остальном API совпадает с requests.Session, но исключения возникают при вызове result(), а не в момент отправки запроса.
requests-futures можно использовать бесплатно? Какая у него лицензия?
requests-futures распространяется с открытым исходным кодом под лицензией Other. Перед использованием в коммерческих продуктах проверьте условия лицензии.
requests-futures всё ещё поддерживается?
Активно поддерживается. Последний коммит в requests-futures — 5 окт. 2026 г..
Для чего можно использовать requests-futures?
Параллельная загрузка множества независимых URL из скрипта на Python. Добавление фоновых HTTP-вызовов в существующий код на requests с минимальными изменениями. Выполнение больших пакетов запросов в случаях, когда для каждого запроса важно снизить потребление памяти и поэтому нужен пул процессов.
Как установить requests-futures?
Установите пакет с помощью pip: pip install requests-futures Создайте FuturesSession и отправьте запросы; вызовите result() для каждого future, чтобы получить ответ
Где скачать requests-futures?
Исходный код и инструкции по установке — на GitHub: https://github.com/ross/requests-futures

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

Python-фреймворк для создания AI-агентов, взаимодействующих с клиентами и последовательно соблюдающих бизнес-правила, рекомендации и процедуры за счёт отбора релевантного контекста для LLM на каждом шаге.

18,3 тыс.1,6 тыс.PythonApache-2.0Обновлён 16 часов назад