Skip to main content

A modern, async-first HTTP client library for Python

Project description

Reqivo

Python PyPI Coverage Build


Modern, async-first HTTP client for Python · Zero external dependencies · Built on standard library


🚀 TL;DR

from reqivo import AsyncSession
import asyncio

async def main():
    async with AsyncSession() as session:
        response = await session.get('https://api.github.com/users/octocat')
        print(response.json())

asyncio.run(main())

✨ What is Reqivo?

Reqivo is a modern, async-first HTTP client library built entirely on Python's standard library. No external dependencies, pure performance.

Philosophy

Reqivo is not a requests replacement. It's a modern HTTP foundation.

Reqivo exists to bridge the gap between low-level socket/ssl usage and the need for a fast, modern HTTP client:

  • Using only the standard library (Python 3.9+)
  • Providing an async-first API with sync support
  • Supporting modern protocols (HTTP/1.1, HTTP/2, WebSockets)
  • Maintaining zero external dependencies for maximum portability

Reqivo is for:

  • Developers who want async HTTP without heavyweight dependencies
  • Teams building cloud-native applications
  • Projects where dependencies matter (embedded systems, security-critical apps)
  • Anyone seeking performance and simplicity

📦 Installation

pip install reqivo

🧪 Basic Example

Sync Usage

from reqivo import Session

session = Session()
response = session.get('https://api.example.com/data')
print(response.status)  # 200
print(response.json())   # {"key": "value"}

Async Usage

import asyncio
from reqivo import AsyncSession

async def fetch():
    async with AsyncSession() as session:
        response = await session.get('https://api.example.com/data')
        return response.json()

asyncio.run(fetch())

WebSocket Support

from reqivo import WebSocket

ws = WebSocket('wss://echo.websocket.org')
ws.connect()
ws.send('Hello WebSocket!')
message = ws.receive()
ws.close()

🔍 Key Features

  • Zero external dependencies: Pure Python (Python 3.9+)
  • Async-first design: Built for modern async/await workflows
  • Sync support: Also works in synchronous code
  • HTTP/1.1 support: Full protocol implementation
  • WebSocket support: Sync and async WebSocket clients
  • Connection pooling: Automatic connection reuse for performance
  • Type hints: Fully typed following PEP 561
  • Memory efficient: Optimized with __slots__ where beneficial
  • Comprehensive testing: 97%+ test coverage

Roadmap Features

  • 🔄 HTTP/2 support (Planned v0.5.0)
  • 🔄 HTTP/3/QUIC (Research phase)
  • 🔄 Advanced retry strategies (Planned v0.3.0)
  • 🔄 Request/Response interceptors (Planned v0.4.0)

🧾 Comparison with other libraries

Why not requests, httpx, or aiohttp?

Feature Reqivo requests httpx aiohttp
Zero dependencies
Async/await native
Sync support
WebSocket support
HTTP/2 support 🔄
Connection pooling
Type hints (PEP 561) ⚠️ ⚠️
Memory optimized (__slots__) ⚠️
Coverage tested ≥ 97%
Standard library only

See the numbers yourself: For detailed performance metrics, check out our Benchmark Suite.


📚 Documentation & Examples

Comprehensive examples and documentation are available:

📖 Core Examples

  • Quick Start - Installation, basic GET/POST, async introduction
  • Advanced Patterns - Connection pooling, headers, timeouts, cookies
  • Async Usage - Concurrent requests, async patterns, error handling

🔗 More Examples (Coming Soon)

  • WebSocket usage
  • Error handling strategies
  • Authentication patterns
  • Real-world scenarios

🔧 Development & Testing

Run Tests

# Run all tests with tox
tox

# Run specific Python version
tox -e py312

# Run with coverage
tox -e py312
coverage html && open htmlcov/index.html

Run Benchmarks

cd benchmarks
pip install -r comparison_requirements.txt
python comparison.py

📖 Requirements

  • Python 3.9 or higher
  • No external dependencies for core functionality
  • Optional: pympler for memory benchmarks

🤝 Contributing

We welcome contributions! See CONTRIBUTING.md for guidelines.


📝 License

MIT © 2026 — Rodrigo Ezequiel Roldán
View full license


🗺️ Roadmap

See our detailed ROADMAP.md for planned features and development timeline.

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

reqivo-0.1.0.tar.gz (57.1 kB view details)

Uploaded Source

Built Distribution

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

reqivo-0.1.0-py3-none-any.whl (29.4 kB view details)

Uploaded Python 3

File details

Details for the file reqivo-0.1.0.tar.gz.

File metadata

  • Download URL: reqivo-0.1.0.tar.gz
  • Upload date:
  • Size: 57.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for reqivo-0.1.0.tar.gz
Algorithm Hash digest
SHA256 14870d1a81bdbec06a72ef42ed6e0803448d3209814bb307da7d48cfdbb8001a
MD5 c6c4614fd384ec6aa532af0d8e6c2215
BLAKE2b-256 8fbfbe67f0a4207a8b6f30a7b5089f3dcb0595348af5d0f95074c60cb4c6db75

See more details on using hashes here.

File details

Details for the file reqivo-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: reqivo-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 29.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for reqivo-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4cc427d589660f16c8e58de4e4aa081a1858cc1c227be547aa64ebbedc196e2f
MD5 3f59c958e9a9f30a44518eda4ec5ff50
BLAKE2b-256 d6e0e31e09cbd64b4474c401b0eb8614263ee600c3532922330aa24da9fb8da3

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