Skip to main content

reqrio-py

reqrio-py is the Python binding for reqrio, a lightweight and high-concurrency HTTP request library.

Features

  • High-performance HTTP/HTTPS request engine with low-copy semantics.
  • Built-in TLS support using BoringSSL.
  • Supports HTTP/1.1 and HTTP/2.0 via ALPN.
  • Supports custom headers, cookies, timeouts, proxies, and certificate verification.
  • Supports form data, JSON, text, bytes, and multipart file uploads.
  • Includes a WebSocket client wrapper.

Installation

pip install reqrio

Python 3.9 or newer is required.

Quick Start

import reqrio

session = reqrio.Session(
    headers={
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)...",
        "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
    },
    alpn=reqrio.ALPN.HTTP20,
    verify=True,
)

session.set_timeout(3000, 3000, 3000, 30000)

response = session.get("https://www.example.com")
print(response.statue_code())
print(response.text())

session.close()

API Reference

reqrio.Session

Create a session:

session = reqrio.Session(
    headers=None,
    alpn=reqrio.ALPN.HTTP11,
    verify=True,
    proxy=None,
    key_log=None,
    ja3=None,
    ja4=None,
    client_hello=None,
    random_tls=False,
    custom_tls=None,
    token="",
)

Common methods:

  • session.set_headers(headers: dict)
  • session.add_header(name: str, value: str)
  • session.remove_header(name: str)
  • session.set_timeout(connect, read, write, handle, connect_times=3, handle_times=3)
  • session.set_cookie(cookie: str)
  • session.add_cookie(name: str, value: str)
  • session.get(url, params=None, data=None, json=None, bytes=None, text=None, **kwargs)
  • session.post(url, params=None, data=None, json=None, bytes=None, text=None, **kwargs)
  • session.open_stream(method, url, params=None, data=None, json=None, bytes=None, text=None, **kwargs)
  • session.close()

Helper functions

reqrio also offers shortcut functions for single requests:

resp = reqrio.get(
    "https://www.example.com",
    headers={"User-Agent": "..."},
    params={"q": "test"},
)
print(resp.statue_code())

resp = reqrio.post(
    "https://www.example.com/api",
    headers={"Content-Type": "application/json"},
    json={"key": "value"},
)
print(resp.statue_code())

WebSocket support

from reqrio import WebSocket, WsOpCode

headers = {
    "Origin": "https://example.com",
    "User-Agent": "Mozilla/5.0...",
}

ws = WebSocket(
    "wss://example.com/",
    uri="wss://example.com/api/ws",
    headers=headers,
)
ws.open()

while True:
    frame = ws.read()
    if frame.opcode == WsOpCode.PING:
        ws.write(WsOpCode.PONG, frame.payload)
    else:
        print(frame.payload.decode("utf-8"))

ws.close()

Request Body Types

Supported request bodies:

  • data={...} for form data
  • json={...} for JSON payloads
  • text="..." for plain text
  • bytes=b"..." for raw bytes
  • files=[...] for multipart file upload

File upload example:

files = [
    {
        "path": "./example.txt",
        "field_name": "file",
        "filetype": "text/plain",
    }
]

response = session.post(
    "https://www.example.com/upload",
    data={"name": "test"},
    files=files,
)
print(response.statue_code())

TLS Fingerprinting and Advanced Options

reqrio.Session supports advanced TLS configuration:

  • ja3: JA3 fingerprint string
  • ja4: JA4 fingerprint string
  • client_hello: raw TLS ClientHello bytes
  • random_tls: random TLS fingerprint
  • custom_tls: custom TLS configuration dictionary
  • token: fingerprint authentication token

Additional options:

  • verify=False to disable certificate verification
  • proxy for HTTP/SOCKS proxy support
  • key_log to save TLS key material for debugging

Notes

  • reqrio-py is designed to reuse connections when possible.
  • Be sure to call session.close() to release resources.

License

Apache-2.0

Metadata

Release files for reqrio 0.3.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for reqrio 0.3.1
File Size Uploaded Provenance
reqrio-0.3.1.tar.gz 3.6 MB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for reqrio 0.3.1
File Interpreter ABI Platform
reqrio-0.3.1-py3-none-any.whl Python 3 none any Details

Total release size: 7.2 MB

Release files / reqrio-0.3.1.tar.gz

Download URL reqrio-0.3.1.tar.gz
Size 3.6 MB
Tags Source
SHA-256 checksum
How to use checksums
12383a85ab942ca04c685fc2518e63d253869db7fd4022bb645ef657ee34fe26
BLAKE2b-256 checksum
How to use checksums
44d5d470f61a55efe0ab7a733760ee2eb1c6d6f8658ceb67f4149ab5ae1d5557
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.14

Release files / reqrio-0.3.1-py3-none-any.whl

Download URL reqrio-0.3.1-py3-none-any.whl
Size 3.6 MB
Tags Python 3
SHA-256 checksum
How to use checksums
62d000a93382f67a6313770c1de4effe0e7539c9fce9dfaab3283b2535f29ef1
BLAKE2b-256 checksum
How to use checksums
29db92b47d76fb89e7f56d0e90adebefad80fc76c030f3a4c45e69326939aee0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.14

Security for reqrio 0.3.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

0.3.1 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page