Crate axum_tasks

Source
Expand description

§Axum Background Tasks

Production-ready background task system for Axum applications.

§Quick Start

use axum::{Router, routing::post};
use axum_background_tasks::{AppTasks, Task, TaskResult, admin_routes, HasTasks};
use serde::{Serialize, Deserialize};

#[derive(Task, Serialize, Deserialize)]
#[task(description = "Processing data", retry = true)]
struct DataProcessing {
    data_id: String,
}

impl DataProcessing {
    pub async fn execute(&self) -> TaskResult {
        // Your task logic here
        TaskResult::Success("autosave data".to_string())
    }
}

#[derive(HasTasks)]
struct AppState {
    tasks: AppTasks,
}

#[tokio::main]
async fn main() {
    let app_state = AppState {
        tasks: AppTasks::new(),
    };
     
    let app = Router::new()
        .route("/process", post(process_handler))
        .nest("/admin", admin_routes::<AppState>())
        .with_state(app_state);
         
    // Start workers and server
}

Re-exports§

pub use inventory;

Structs§

AppTasks
CachedJobResult
CancellationToken
A token which can be used to signal a cancellation request to one or more tasks.
HealthStatus
JobMetrics
TaskMetrics
TaskQueueError
TaskRegistration
TaskState

Enums§

TaskOutput
TaskResult
TaskStatus

Constants§

MAX_QUEUE_SIZE
MAX_RETRIES

Traits§

HasTasks
TaskHandler

Functions§

admin_routes
init_task_system
init_task_system_with_persistence
spawn_task_workers

Type Aliases§

TaskFuture
TaskHandlerT

Attribute Macros§

async_trait

Derive Macros§

HasTasks
Derive macro that automatically implements HasTasks trait
Task
Derive macro that automatically implements TaskHandler