Skip to main content

pynenc-rustvello

CI Lint Python 3.12+ License: MIT

Rust-powered backend plugin for pynenc distributed task orchestration — via the rustvello engine.

pynenc-rustvello provides high-performance Rust implementations of all pynenc storage interfaces (broker, orchestrator, state backend, trigger store, and client data store) across 6 storage backends, with optional native Rust orchestration for maximum throughput.

pynenc tasks remain Python code executed by pynenc's own runners (ThreadRunner, ProcessRunner, etc.). This plugin replaces only the storage layer — giving you Rust-level performance for state management, message queuing, and orchestration coordination without changing how your tasks run.

For full Rust task execution, use rustvello directly.

Components

Component Backends Role
Broker Mem, SQLite, Redis, Postgres, Mongo, RabbitMQ Task queue / message delivery
Orchestrator Mem, SQLite, Redis, Postgres, Mongo (native + delegated) Status tracking, blocking, recovery
State Backend Mem, SQLite, Redis, Postgres, Mongo Invocation state, results, exceptions
Client Data Store Mem, SQLite, Redis, Postgres, Mongo Argument caching for large payloads
Trigger Mem, SQLite, Redis, Postgres, Mongo Event-driven & cron-based scheduling

Installation

pip install pynenc-rustvello

Requires Python ≥ 3.12, pynenc ≥ 0.1.0, and rustvello ≥ 0.1.0.

Quick Start

pynenc-rustvello registers itself as a pynenc plugin via entry points. Once installed, Rust backends are available through pynenc's builder:

from pynenc import PynencBuilder

# In-memory Rust backend (fastest for testing)
app = PynencBuilder().app_id("my_app").rustvello_mem().build()

# SQLite Rust backend (persistent, zero-config)
app = PynencBuilder().app_id("my_app").rustvello_sqlite().build()

# Redis Rust backend (production)
app = (
    PynencBuilder()
    .app_id("my_app")
    .rustvello_redis(redis_url="redis://localhost:6379")
    .build()
)

@app.task
def add(x: int, y: int) -> int:
    return x + y

result = add(1, 2).result  # 3

Mixing Backends

Combine different storage backends per component:

app = (
    PynencBuilder()
    .app_id("my_app")
    .rustvello_redis_broker(redis_url="redis://localhost:6379")
    .rustvello_postgres_state(postgres_url="postgresql://localhost/mydb")
    .rustvello_postgres_orchestrator(postgres_url="postgresql://localhost/mydb")
    .rustvello_redis_trigger(redis_url="redis://localhost:6379")
    .rustvello_redis_cds(redis_url="redis://localhost:6379")
    .build()
)

Architecture

pynenc-rustvello is a storage plugin — it replaces pynenc's storage layer with Rust-backed implementations while keeping task execution in Python.

┌────────────────────────────────────────────────┐
│                   pynenc app                   │
│                                                │
│  Tasks (Python)  ←→  Runner (Python)           │
│       │                    │                   │
│       ▼                    ▼                   │
│  ┌─────────────────────────────────────────┐   │
│  │     pynenc-rustvello (storage layer)    │   │
│  │  Broker · Orchestrator · State Backend  │   │
│  │  Trigger · Client Data Store            │   │
│  │         (all backed by Rust FFI)        │   │
│  └─────────────────────────────────────────┘   │
└────────────────────────────────────────────────┘

For users who want full Rust task execution (not just storage), use rustvello directly.

Documentation

Full documentation: pynenc-rustvello.readthedocs.io

Ecosystem

Package Description
pynenc Core distributed task framework
rustvello Rust engine powering this plugin
pynenc-redis Pure-Python Redis backend
pynenc-mongo Pure-Python MongoDB backend
pynenc-rabbitmq Pure-Python RabbitMQ broker

Development

# Clone the repository
git clone https://github.com/pynenc/pynenc_rustvello.git
cd pynenc_rustvello

# Install in dev mode
uv sync --all-extras

# Run tests
uv run python -m pytest tests/unit/ -q

# Lint
uv run ruff check pynenc_rustvello/ tests/
uv run ruff format --check pynenc_rustvello/ tests/

License

MIT

Metadata

Release files for pynenc-rustvello 0.1.3

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

Source distribution (sdist)

Source distribution for pynenc-rustvello 0.1.3
File Size Uploaded
pynenc_rustvello-0.1.3.tar.gz 387.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pynenc-rustvello 0.1.3
File Interpreter ABI Platform
pynenc_rustvello-0.1.3-py3-none-any.whl Python 3 none any Details

Total release size: 415.9 kB

Release files / pynenc_rustvello-0.1.3.tar.gz

Download URL pynenc_rustvello-0.1.3.tar.gz
Size 387.9 kB
Tags Source
SHA-256 checksum
How to use checksums
d20027848da8ea4ab41fa31579fd4dc0201356e1f4df684e42b36392b0e3b35f
BLAKE2b-256 checksum
How to use checksums
240903de223d59a4c97b9e680aa8ee9802f2b91b3f57d466d4ee57e64211b723
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / pynenc_rustvello-0.1.3-py3-none-any.whl

Download URL pynenc_rustvello-0.1.3-py3-none-any.whl
Size 28.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c81469b8e433bc23f49c79e6cac6b48d88a6753176d138416bc441a9ed3b9e78
BLAKE2b-256 checksum
How to use checksums
cc8b0dfc74d1a052f898c9141125eb3cedcad45b909fe021e2efa1e91965418e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.1.3 This release

2 release files

0.1.2

2 release files

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