Asynchronous Python HTTP for Humans

1.0.2 · active · verified Thu Apr 09

Requests-futures is a small add-on for the popular 'requests' HTTP library, enabling asynchronous HTTP requests. It leverages Python's `concurrent.futures` module to perform requests concurrently using either `ThreadPoolExecutor` or `ProcessPoolExecutor`. It provides a `FuturesSession` class that mimics `requests.Session` but returns `Future` objects, allowing non-blocking operations and retrieval of responses later. The current version is 1.0.2, and its release cadence is infrequent but active.

Warnings

Install

Imports

Quickstart

Initialize a FuturesSession, submit requests which return Future objects, then iterate through the Futures and call `.result()` to obtain the Response objects once they are ready. Error handling for network issues should wrap the `.result()` call.

from requests_futures.sessions import FuturesSession
import os

session = FuturesSession()

# Example: Send multiple GET requests concurrently
urls = [
    'http://httpbin.org/get?id=1',
    'http://httpbin.org/get?id=2',
    'http://httpbin.org/get?id=3',
]

futures = [session.get(url) for url in urls]

for i, future in enumerate(futures):
    try:
        response = future.result() # Blocks until the request completes
        print(f"Request {i+1} Status: {response.status_code}")
        print(f"Request {i+1} Content: {response.json()['args']}")
    except Exception as e:
        print(f"Request {i+1} failed: {e}")

view raw JSON →