Skip to main content

A fast, modern HTTP client for Python

Project description

Fluxium

A fast, modern HTTP client for Python.

PyPI version Python CI License: MIT Coverage

Fluxium provides a clean, requests-like API with HTTP/2 multiplexing, automatic retries, connection pooling, streaming, SSE, middleware hooks, built-in caching, and full async support — with zero blocking calls on the asyncio event loop.

import fluxium

r = fluxium.get("https://api.example.com")
print(r.json())

Verify installation:

python -c "import fluxium; print(fluxium.__version__)"

Installation

pip install fluxium

Optional extras:

pip install "fluxium[socks]"     # SOCKS proxy support
pip install "fluxium[uvloop]"    # 20-40% faster async
pip install "fluxium[cache]"     # Hishel RFC 7234 cache backend
pip install "fluxium[all]"       # Everything

Features

Feature Description
HTTP/2 Multiplexed connections, header compression (default enabled)
Connection Pooling Up to 200 connections, 100 keep-alive, with optional pre-warming
Automatic Retries Exponential backoff for 5xx and timeouts
Streaming & SSE iter_content(), iter_lines(), iter_sse()
Built-in Caching In-memory, disk-based, or RFC 7234 (hishel) with TTL
Middleware Hooks for logging, auth refresh, rate limiting
OAuth2 / Bearer Automatic token management and refresh
Async Full asyncio support via AsyncSession
uvloop Auto-used when installed for 20-40% async throughput

Quick Start

Basic Requests

import fluxium

r = fluxium.get("https://api.example.com", timeout=10)
print(r.status_code, r.json())

r = fluxium.post("https://api.example.com/items", json={"name": "widget"})

Sessions (Connection Pooling)

with fluxium.Session() as s:
    r1 = s.get("https://api.example.com/users")
    r2 = s.post("https://api.example.com/items", json={"name": "x"})
    # Cookies from r1 are automatically sent with r2

Pre-warming Connections

with fluxium.Session() as s:
    s.prewarm("https://api.example.com")  # Opens connection now
    r = s.get("https://api.example.com")  # Uses pooled connection

Async

import asyncio, fluxium

async def main():
    async with fluxium.AsyncSession() as s:
        tasks = [s.get(f"https://api.example.com/item/{i}") for i in range(10)]
        results = await asyncio.gather(*tasks)

asyncio.run(main())

Retries & Caching

from fluxium import Session, MemoryCache

with Session(max_retries=3, cache=MemoryCache()) as s:
    r = s.get("https://api.example.com")  # retried on failure, cached on success

Streaming & SSE

with fluxium.Session() as s:
    r = s.get("https://api.example.com/stream", stream=True)
    for line in r.iter_lines():
        print(line)

    r = s.get("https://api.example.com/events", stream=True)
    for event in fluxium.iter_sse(r):
        print(event.event, event.json())

Timeouts

from fluxium import Timeout

# All components same timeout
fluxium.get("https://api.example.com", timeout=30.0)

# Structured timeout
fluxium.get("https://api.example.com", timeout=Timeout(connect=5.0, read=30.0))

# Or use tuple shorthand (connect, read)
fluxium.get("https://api.example.com", timeout=(5.0, 30.0))

Rate Limiting

from fluxium import Session, RateLimitMiddleware

s = Session()
s.add_middleware(RateLimitMiddleware(calls=100, period=60))  # 100 req/min

Per-Request Hooks

s = Session()
s.add_hook("response", lambda response, request: log(response))
s.add_hook("error", lambda error, request: notify(error))

Performance

Cached workloads: fluxium is 4.3x faster than httpx. On unique requests, performance is comparable.

Scenario vs httpx
Repeated GET with MemoryCache ~4.3x faster
Session GET (pooled) ~1.6x slower (per-request overhead)
One-shot GET ~1.03x (negligible)
Async concurrent ~1.5x slower
Body encoding / CookieJar ~1.0x (identical)

Key takeaway: fluxium wins on repeated requests (caching) and is competitive on unique requests. Install uvloop for 20-40% async throughput improvement.

Documentation

  • Getting Started — install, first request, compatibility
  • Guides — step-by-step tutorials for every feature
  • API Reference — complete class and method signatures
  • Advanced — custom middleware, performance, SSE deep-dive
  • Changelog — version history and migration guide

Contributing

See CONTRIBUTING.md.

License

MIT — © 2026 Siddhant Bayas

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fluxium-3.0.0.tar.gz (42.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fluxium-3.0.0-py3-none-any.whl (26.8 kB view details)

Uploaded Python 3

File details

Details for the file fluxium-3.0.0.tar.gz.

File metadata

  • Download URL: fluxium-3.0.0.tar.gz
  • Upload date:
  • Size: 42.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for fluxium-3.0.0.tar.gz
Algorithm Hash digest
SHA256 76279f28d7acdfb6c0fdbbea310530652e4aeb088cf4a0e160ebbffa64b2ba54
MD5 0e7f6889276d18643f52bf0303c6f550
BLAKE2b-256 5c85b1f05061f46e9b3fe740220fb329dcdbdc010205a140b12f4df972f3c624

See more details on using hashes here.

File details

Details for the file fluxium-3.0.0-py3-none-any.whl.

File metadata

  • Download URL: fluxium-3.0.0-py3-none-any.whl
  • Upload date:
  • Size: 26.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for fluxium-3.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 aa653dcaba95195c4aa15d166b6b28edf3e04552fa6244c6584bbfef1e4f3672
MD5 620b3f47f639b5a356623b07d43ec8cf
BLAKE2b-256 12e3516078623f69a1a7e2feb67df89cfbb9beffd820ae27237a09329feaa541

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page