Skip to content

cool-japan/celers

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

2 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

CeleRS - Enterprise Distributed Task Queue for Rust

πŸŽ‰ 100% COMPLETE - ALL 18/18 CRATES IMPLEMENTED! πŸŽ‰

CeleRS (Celery + Rust) is a production-ready, Celery-compatible distributed task queue library for Rust. Built from the ground up to provide binary-level protocol compatibility with Python Celery while delivering superior performance, type safety, and reliability.

Status: βœ… Production-Ready | βœ… 0 Errors | βœ… 0 Warnings | βœ… 5 Brokers | βœ… 3 Backends

🎯 Vision

CeleRS aims to be the definitive task queue solution for Rust, offering:

  • πŸ”„ Celery Compatibility: Drop-in replacement for Python Celery workers
  • ⚑ Performance: 10x throughput compared to Python Celery
  • πŸ”’ Type Safety: Compile-time guarantees for task signatures
  • 🏒 Enterprise-Ready: Battle-tested patterns for production deployments
  • 🌐 Multi-Language: Interoperate with Python, JavaScript, and other Celery clients

✨ Features

Core Capabilities

  • βœ… Type-Safe Task Definitions: Compile-time verified task signatures
  • βœ… Priority Queues: Multi-level task prioritization
  • βœ… Dead Letter Queue: Automatic handling of permanently failed tasks
  • βœ… Task Cancellation: In-flight task cancellation via Pub/Sub
  • βœ… Retry Logic: Exponential backoff with configurable max retries
  • βœ… Timeout Enforcement: Task-level and worker-level timeout controls
  • βœ… Graceful Shutdown: Clean worker termination with in-flight task completion

Broker Support (5 Types)

  • βœ… Redis: High-throughput with Lua scripts and pipelining
  • βœ… PostgreSQL: ACID guarantees with FOR UPDATE SKIP LOCKED
  • βœ… MySQL: Full SQL support with batch operations
  • βœ… RabbitMQ (AMQP): Enterprise message routing and exchanges
  • βœ… AWS SQS: Cloud-native serverless queue integration

Result Backends (3 Types)

  • βœ… Redis Backend: Fast in-memory storage with automatic TTL
  • βœ… Database Backend: PostgreSQL/MySQL with SQL analytics and durability
  • βœ… gRPC Backend: Microservices-ready RPC result storage
  • βœ… Chord Support: Distributed barrier synchronization across all backends

Workflow Primitives (Canvas)

  • βœ… Chain: Sequential task execution with result passing
  • βœ… Group: Parallel task execution
  • βœ… Chord: Map-reduce with distributed barrier callback
  • βœ… Map/Starmap: Distributed mapping operations
  • βœ… Signature: Task signatures for workflow composition

Observability

  • βœ… Prometheus Metrics: Task throughput, latency, queue depth
  • βœ… Health Checks: Kubernetes-compatible liveness/readiness probes
  • βœ… OpenTelemetry: Distributed tracing integration
  • βœ… Grafana Dashboards: Pre-built visualization templates

Developer Experience

  • βœ… Procedural Macros: #[celers::task] for automatic task registration
  • βœ… CLI Tooling: Worker management, queue inspection, DLQ operations
  • βœ… Configuration Management: TOML/YAML files + environment variables
  • βœ… Comprehensive Documentation: API docs, guides, and examples

πŸ—οΈ Architecture

CeleRS follows a layered architecture inspired by Python Celery's design:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    Application Layer                     β”‚
β”‚  celers-macros, celers-cli, user task definitions       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                           β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚              Runtime & Workflow Layer                    β”‚
β”‚  celers-worker, celers-canvas, celers-beat               β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                           β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                 Messaging Layer (Kombu)                  β”‚
β”‚  celers-kombu, celers-broker-*, celers-backend-*         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                           β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                   Protocol Layer                         β”‚
β”‚  celers-protocol (Celery v2/v5 compatibility)            β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Workspace Crates (18 Total - 100% Complete)

Core & Protocol Layer

  • celers: Facade crate with unified API
  • celers-core: Core traits (Task, Broker, ResultBackend, TaskExecutor)
  • celers-protocol: Celery Protocol v2/v5 message format
  • celers-kombu: Kombu-compatible messaging abstraction

Broker Layer (5 Implementations)

  • celers-broker-redis: Redis with Lua scripts and pipelining
  • celers-broker-postgres: PostgreSQL with FOR UPDATE SKIP LOCKED
  • celers-broker-sql: MySQL with batch operations
  • celers-broker-amqp: RabbitMQ/AMQP with exchanges and routing
  • celers-broker-sqs: AWS SQS with long polling

Result Backend Layer (3 Implementations)

  • celers-backend-redis: Redis with TTL and chord synchronization
  • celers-backend-db: PostgreSQL/MySQL with SQL analytics
  • celers-backend-rpc: gRPC for microservices architectures

Runtime & Workflow Layer

  • celers-worker: Task execution runtime with concurrency control
  • celers-canvas: Workflow primitives (Chain, Chord, Group, Map)
  • celers-beat: Periodic task scheduler (Cron, Interval, Solar)

Developer Tools

  • celers-macros: Procedural macros (#[task], #[derive(Task)])
  • celers-cli: Command-line worker and queue management
  • celers-metrics: Prometheus metrics and observability

Crate Status (v0.2.0)

Crate Status Tests
celers-worker [Stable] 486
celers-protocol [Stable] 461
celers-broker-redis [Stable] 454
celers-kombu [Stable] 323
celers-beat [Stable] 312
celers-broker-sqs [Stable] 294
celers-core [Stable] 247
celers-broker-amqp [Stable] 244
celers-macros [Stable] 221
celers-backend-redis [Stable] 208
celers-canvas [Stable] 196
celers-metrics [Stable] 183
celers (facade) [Stable] 145
celers-broker-postgres [Stable] 117
celers-cli [Stable] 101
celers-broker-sql [Stable] 68
celers-backend-rpc [Stable] 8
celers-backend-db [Stable] 7
Total 18/18 4075

πŸš€ Quick Start

Installation

Add CeleRS to your Cargo.toml:

[dependencies]
celers-core = "0.2"
celers-protocol = "0.2"
celers-broker-redis = "0.2"
celers-worker = "0.2"
celers-macros = "0.2"
tokio = { version = "1", features = ["full"] }

Define a Task

use celers_macros::task;
use serde::{Deserialize, Serialize};

#[derive(Deserialize)]
struct AddArgs {
    x: i32,
    y: i32,
}

#[task]
async fn add(args: AddArgs) -> i32 {
    args.x + args.y
}

Start a Worker

use celers_broker_redis::RedisBroker;
use celers_worker::{Worker, WorkerConfig};

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    // Create broker
    let broker = RedisBroker::new("redis://localhost:6379", "celers")?;

    // Configure worker
    let config = WorkerConfig {
        concurrency: 4,
        max_retries: 3,
        default_timeout: Duration::from_secs(300),
        ..Default::default()
    };

    // Register tasks
    let mut worker = Worker::new(broker, config);
    worker.register_task("add", add);

    // Start processing
    worker.run().await?;

    Ok(())
}

Enqueue Tasks

use celers_core::SerializedTask;
use celers_broker_redis::RedisBroker;

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    let mut broker = RedisBroker::new("redis://localhost:6379", "celers")?;

    let task = SerializedTask::new(
        "add".to_string(),
        serde_json::to_vec(&serde_json::json!({
            "x": 5,
            "y": 3
        }))?
    ).with_priority(9);  // High priority

    broker.enqueue(task).await?;

    Ok(())
}

πŸ”§ CLI Usage

CeleRS provides a comprehensive CLI for operational tasks:

# Start a worker
celers worker --broker redis://localhost:6379 --concurrency 8

# Check queue status
celers status

# Inspect Dead Letter Queue
celers dlq inspect

# Replay failed task
celers dlq replay <task-id>

# Generate configuration file
celers init > celers.toml

πŸ“Š Monitoring

Prometheus Metrics

CeleRS exports comprehensive metrics:

# Counters
celers_tasks_enqueued_total
celers_tasks_completed_total
celers_tasks_failed_total
celers_tasks_retried_total
celers_tasks_cancelled_total

# Gauges
celers_queue_size
celers_processing_queue_size
celers_dlq_size
celers_active_workers

# Histograms
celers_task_execution_seconds

Health Checks

Kubernetes-compatible health endpoints:

let checker = HealthChecker::new();

// Liveness probe: Is the worker alive?
let health = checker.is_alive();

// Readiness probe: Can the worker accept tasks?
let ready = checker.is_ready();

// Full health status
let info = checker.get_health();

πŸ—ΊοΈ Roadmap

Current Status (v0.2.0) β€” Released 2026-03-28

  • βœ… Phase 1: The Backbone (Core runtime)
  • βœ… Phase 2: Advanced Features (Priorities, DLQ, Cancellation)
  • βœ… Phase 3: Developer Experience (Macros, CLI, Metrics)
  • βœ… Phase 4: Performance & Scalability
  • βœ… Phase 5: Beat Scheduler (Cron, Interval, Solar)
  • βœ… Phase 6: Extended Brokers & Backends (AMQP, SQS, DB, gRPC)
  • βœ… Phase 7: Full Celery Protocol Compatibility (v2 wire format)
  • βœ… Phase 8: v0.2.0 Enhancements (Compression, Distributed Locks, Events)
  • βœ… Phase 9: v0.2.0 Production Features (Event Persistence, Chunking, Heartbeat)

Upcoming Milestones

  • v0.3.0: Full Python Celery interoperability (bidirectional task exchange, Protocol v5)
  • v1.0.0: Stable API, Kafka/NATS brokers, web admin dashboard, security hardening

πŸ“– Documentation

πŸ”¬ Examples

The repository includes 8+ working examples:

  • phase1_complete - Basic task execution
  • graceful_shutdown - Clean worker termination
  • priority_queue - Multi-priority task handling
  • dead_letter_queue - DLQ management
  • task_cancellation - In-flight cancellation
  • macro_tasks - Procedural macro usage
  • prometheus_metrics - Metrics HTTP server
  • health_checks - Health check endpoints

Run examples with:

cargo run --example prometheus_metrics

πŸ§ͺ Testing

# Run all tests
cargo test

# Run with coverage
cargo test --all-features

# Run benchmarks
cargo bench

# Check for warnings
cargo clippy -- -D warnings

πŸ† Performance

CeleRS is designed for high throughput:

  • Target: 10,000 tasks/sec per worker
  • Latency: P95 < 10ms for enqueue/dequeue
  • Memory: < 50MB baseline per worker
  • Reliability: 99.99% task delivery guarantee

Benchmarks available via:

cargo bench --bench serialization
cargo bench --bench queue_operations

🀝 Contributing

We welcome contributions! Please see CONTRIBUTING.md for guidelines.

Development Setup

git clone https://github.com/cool-japan/celers.git
cd celers
cargo build --all-features
cargo test --all-features

Code Standards

  • No warnings policy: All code must compile without warnings
  • Test coverage: Aim for >80% coverage
  • Documentation: Public APIs must have rustdoc comments
  • Formatting: Use cargo fmt before committing

Sponsorship

CeleRS is developed and maintained by COOLJAPAN OU (Team Kitasan).

If you find CeleRS useful, please consider sponsoring the project to support continued development of the Pure Rust ecosystem.

Sponsor

https://github.com/sponsors/cool-japan

Your sponsorship helps us:

  • Maintain and improve the COOLJAPAN ecosystem
  • Keep the entire ecosystem (OxiBLAS, OxiFFT, SciRS2, etc.) 100% Pure Rust
  • Provide long-term support and security updates

πŸ“œ License

Licensed under Apache-2.0

πŸ™ Acknowledgments

πŸ“ž Support

  • GitHub Issues: Bug reports and feature requests
  • Discussions: Questions and community support
  • Documentation: Comprehensive guides and API docs

Status: Active Development | Version: 0.2.0 | Rust: 1.70+ (MSRV)

Built with ❀️ for the Rust community

About

CeleRS (Celery + Rust) is a production-ready, Celery-compatible distributed task queue library for Rust. Built from the ground up to provide binary-level protocol compatibility with Python Celery while delivering superior performance, type safety, and reliability.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages