Skip to main content

Rust acceleration layer for agora-etl — high-throughput record dispatch

Project description

Agora ETL Rust

License Python PyPI

Rust acceleration layer for agora-etl.

Replaces the three hot inner-loop primitives in the agora-etl runtime with GIL-releasing Rust implementations — zero-copy record buffering, batched metrics accumulation, and allocation-free batch buffering. Install it alongside agora-etl and the runtime picks it up automatically. No code changes required.


Installation

pip install agora-etl agora-etl-rs

Or use the [rs] extra to install both in one step:

pip install "agora-etl[rs]"

Verify the extension loaded correctly:

from agora_rs import is_available, RUST_AVAILABLE

print(RUST_AVAILABLE)   # True
print(is_available())   # True

What it accelerates

Component Pure Python baseline Rust implementation
RecordBuffer asyncio.Queue — one Handle alloc per item Mutex<VecDeque> + Condvar, GIL released on every push/pop
MetricsAccumulator Python attribute lookup on every record Rust counters, flushed to Python every N records
LinearBatchBuffer list.append + PendingWrite dataclass per record Vec accumulation, no Python allocation per record

The runtime falls back to the pure-Python path transparently if agora-etl-rs is not installed.


Requirements

  • Python ≥ 3.11
  • agora-etl ≥ 0.2.0

Building from source

You need a Rust toolchain and maturin.

# Install Rust (if not already installed)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# Clone the repo
git clone https://github.com/thanhtham010891/agora-etl-rs.git
cd agora-etl-rs

# Create a virtual environment and install build tools
python3.11 -m venv .venv
source .venv/bin/activate
pip install "maturin>=1.0,<2"

# Build and install the extension into the active venv
maturin develop --release

Running tests

pip install -e ".[dev]"
pytest tests/ -v

License

Apache-2.0 — see LICENSE for details.

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

agora_etl_rs-0.1.0.tar.gz (20.3 kB view details)

Uploaded Source

Built Distributions

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

agora_etl_rs-0.1.0-cp311-abi3-win_amd64.whl (156.3 kB view details)

Uploaded CPython 3.11+Windows x86-64

agora_etl_rs-0.1.0-cp311-abi3-musllinux_1_2_x86_64.whl (481.9 kB view details)

Uploaded CPython 3.11+musllinux: musl 1.2+ x86-64

agora_etl_rs-0.1.0-cp311-abi3-manylinux_2_28_x86_64.whl (271.2 kB view details)

Uploaded CPython 3.11+manylinux: glibc 2.28+ x86-64

agora_etl_rs-0.1.0-cp311-abi3-manylinux_2_28_aarch64.whl (269.0 kB view details)

Uploaded CPython 3.11+manylinux: glibc 2.28+ ARM64

agora_etl_rs-0.1.0-cp311-abi3-macosx_11_0_arm64.whl (248.6 kB view details)

Uploaded CPython 3.11+macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: agora_etl_rs-0.1.0.tar.gz
  • Upload date:
  • Size: 20.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for agora_etl_rs-0.1.0.tar.gz
Algorithm Hash digest
SHA256 f9f4d68d41f9b1569072995da561c544ca3706dd10c61769ab21251cff3c2342
MD5 06f9b64fd1c606c49aa44577d5ac52ab
BLAKE2b-256 ca8b9fc50ef2f92ed6784f18f1616174d8074065fbee3fbc5b34a9a41e920116

See more details on using hashes here.

Provenance

The following attestation bundles were made for agora_etl_rs-0.1.0.tar.gz:

Publisher: release.yml on thanhtham010891/agora-etl-rs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file agora_etl_rs-0.1.0-cp311-abi3-win_amd64.whl.

File metadata

  • Download URL: agora_etl_rs-0.1.0-cp311-abi3-win_amd64.whl
  • Upload date:
  • Size: 156.3 kB
  • Tags: CPython 3.11+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for agora_etl_rs-0.1.0-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 a6ef5074364eaac510bb1399c67476ef0272ea192bb0a12f599d4e464654ff2b
MD5 e312d21b545be65668b436bdc88a0bb9
BLAKE2b-256 f48285301ff7f179bd4fda41218cf3541d084f1936124c58d532533d938db6ba

See more details on using hashes here.

Provenance

The following attestation bundles were made for agora_etl_rs-0.1.0-cp311-abi3-win_amd64.whl:

Publisher: release.yml on thanhtham010891/agora-etl-rs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file agora_etl_rs-0.1.0-cp311-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for agora_etl_rs-0.1.0-cp311-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 05964821f0c07397f479119d5d8290e9003fcdfb8f2490fbaa67f438fb9f13e3
MD5 2b2f341fb6d91b338b31e3f7b23365bc
BLAKE2b-256 67382e23aea2fe2195c55324d56a973027f798a009ac29c5ffbd2fa199181ea0

See more details on using hashes here.

Provenance

The following attestation bundles were made for agora_etl_rs-0.1.0-cp311-abi3-musllinux_1_2_x86_64.whl:

Publisher: release.yml on thanhtham010891/agora-etl-rs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file agora_etl_rs-0.1.0-cp311-abi3-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for agora_etl_rs-0.1.0-cp311-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ff6aec4179280abb58c01c52d94df68d90968802fded006038161b6c42438fb4
MD5 c59b0f73e04ac6204d36e489e670db04
BLAKE2b-256 5f9010bf8b34a0584e4a86210fe8d27fe182e858da70ec119d47dc49ad157a05

See more details on using hashes here.

Provenance

The following attestation bundles were made for agora_etl_rs-0.1.0-cp311-abi3-manylinux_2_28_x86_64.whl:

Publisher: release.yml on thanhtham010891/agora-etl-rs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file agora_etl_rs-0.1.0-cp311-abi3-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for agora_etl_rs-0.1.0-cp311-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e6a516023ea9b3c9ca36f25c445f3e8d7c0e320cce14b75d89c646e80ebb2267
MD5 87b1776ea940ca1cecdba180a3d95735
BLAKE2b-256 ca9f08f2e910cd3739a98f74d7a30609c45965a639e4f37793613340722f8bfd

See more details on using hashes here.

Provenance

The following attestation bundles were made for agora_etl_rs-0.1.0-cp311-abi3-manylinux_2_28_aarch64.whl:

Publisher: release.yml on thanhtham010891/agora-etl-rs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file agora_etl_rs-0.1.0-cp311-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for agora_etl_rs-0.1.0-cp311-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 be457afb6b446cc6e3f58727deb0989dd445f90dee9ce679a09173a5854ad412
MD5 742106f438c6a66dddb4262239e88e2e
BLAKE2b-256 d910c91bbfb60acad8215edc749ff4e372ba60afa28afbf6629680f86a2f249a

See more details on using hashes here.

Provenance

The following attestation bundles were made for agora_etl_rs-0.1.0-cp311-abi3-macosx_11_0_arm64.whl:

Publisher: release.yml on thanhtham010891/agora-etl-rs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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