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 — © 2025 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-2.0.0.tar.gz (41.9 kB view details)

Uploaded Source

Built Distribution

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

fluxium-2.0.0-py3-none-any.whl (26.5 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for fluxium-2.0.0.tar.gz
Algorithm Hash digest
SHA256 53c6ac8c63dffb391c8d2850f23f9cfbcf4f02e7a159ed053ade98b0388979a6
MD5 ad591aa63f5a0c5a59a3b457da037544
BLAKE2b-256 9a6e20490aa644300211c4dd42d0cf7f7867cd020582fb41f2a1d1dfee96f9d9

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for fluxium-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 079784ea99d95df4884593afa506df18325503971faf8384ff7ca5c1cbacb3ea
MD5 a3dce0a65c1dddaf744ee8a2ffee79ea
BLAKE2b-256 d983f71e05e217dca1f53fcf3f40435847261f18262f1761d81362f4106907a1

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