Skip to main content

Crate reinhardt_tasks

Crate reinhardt_tasks 

Source
Expand description

§Reinhardt Background Tasks

Celery-inspired background task queue for Reinhardt framework.

§Features

  • Async task execution
  • Task scheduling (cron-like)
  • Task retries with exponential backoff
  • Task priority
  • Task chaining
  • Task dependencies and DAG execution
  • Result backend
  • Task execution metrics and monitoring
  • Worker load balancing (Round-robin, Least-connections, Weighted, Random)
  • Webhook notifications for task completion

§Example

// Example: Define a task
// struct SendEmailTask {
//     to: String,
//     subject: String,
//     body: String,
// }

// #[async_trait]
// impl TaskExecutor for SendEmailTask {
//     async fn execute(&self) -> TaskResult<()> {
        // Send email
//         Ok(())
//     }
// }

// Queue the task
let queue = QueueImpl::new();
queue.enqueue(SendEmailTask {
    to: "user@example.com".to_string(),
    subject: "Hello".to_string(),
    body: "Test email".to_string(),
}).await?;

Re-exports§

pub use backend::DummyBackend;
pub use backend::ImmediateBackend;
pub use backend::ResultStatus;
pub use backend::TaskBackend;
pub use backend::TaskBackends;
pub use backend::TaskExecutionError;
pub use backend::TaskResultStatus;
pub use chain::ChainStatus;
pub use chain::TaskChain;
pub use chain::TaskChainBuilder;
pub use dag::TaskDAG;
pub use dag::TaskNode;
pub use dag::TaskNodeStatus;
pub use load_balancer::LoadBalancer;
pub use load_balancer::LoadBalancingStrategy;
pub use load_balancer::WorkerId;
pub use load_balancer::WorkerInfo;
pub use load_balancer::WorkerMetrics;
pub use locking::LockToken;
pub use locking::MemoryTaskLock;
pub use locking::TaskLock;
pub use metrics::MetricsSnapshot;
pub use metrics::TaskCounts;
pub use metrics::TaskMetrics;
pub use metrics::WorkerStats;
pub use priority_queue::Priority;
pub use priority_queue::PriorityTaskQueue;
pub use queue::QueueConfig;
pub use queue::TaskQueue;
pub use registry::SerializedTask;
pub use registry::TaskFactory;
pub use registry::TaskRegistry;
pub use result::MemoryResultBackend;
pub use result::ResultBackend;
pub use result::TaskOutput;
pub use result::TaskResult as TaskResultBackend;
pub use result::TaskResultMetadata;
pub use retry::RetryState;
pub use retry::RetryStrategy;
pub use scheduler::CronSchedule;
pub use scheduler::Schedule;
pub use scheduler::Scheduler;
pub use task::DEFAULT_TASK_QUEUE_NAME;
pub use task::TASK_MAX_PRIORITY;
pub use task::TASK_MIN_PRIORITY;
pub use task::Task;
pub use task::TaskExecutor;
pub use task::TaskId;
pub use task::TaskPriority;
pub use task::TaskStatus;
pub use webhook::HttpWebhookSender;
pub use webhook::RetryConfig;
pub use webhook::TaskStatus as WebhookTaskStatus;
pub use webhook::WebhookConfig;
pub use webhook::WebhookError;
pub use webhook::WebhookEvent;
pub use webhook::WebhookSender;
pub use webhook::is_blocked_ip;
pub use webhook::validate_resolved_ips;
pub use webhook::validate_webhook_url;
pub use worker::Worker;
pub use worker::WorkerConfig;

Modules§

backend
Task backend trait and built-in implementations. Task backend implementations
backends
Feature-gated backend implementations (Redis, SQLite, SQS, RabbitMQ). Task backend implementations
chain
Task chaining for sequential execution pipelines. Task chaining
dag
Directed acyclic graph (DAG) based task dependencies. Task Dependency Graph (DAG)
load_balancer
Worker load balancing strategies. Worker load balancing
locking
Distributed task locking to prevent duplicate execution. Distributed task locking mechanism
metrics
Task execution metrics and monitoring. Task metrics and monitoring
priority_queue
Priority-based task queue. Priority task queue with weighted scheduling
queue
Core task queue with configuration. Task queue management
registry
Task registry for serialization and discovery. Task registry for dynamic task dispatch
result
Result backend for storing task outputs. Task result types and persistence
retry
Retry policies with exponential backoff. Task retry logic with exponential backoff
scheduler
Cron-like task scheduling. Task scheduling
task
Task trait and execution lifecycle. Task definitions and execution
webhook
Webhook notifications for task completion events. Webhook notifications for task completion events
worker
Task worker execution loop. Task worker

Enums§

TaskError
Task-related errors

Type Aliases§

TaskResult
Result type for task operations