Expand description
§task-supervisor
task-supervisor helps you keep Tokio tasks alive.
It watches each task, restarts it if it crashes or stops responding, and lets you add, restart, or kill tasks at runtime.
§Install
cargo add task-supervisor§Quick example
use task_supervisor::{SupervisorBuilder, SupervisedTask, TaskResult};
#[derive(Clone)]
struct Printer;
impl SupervisedTask for Printer {
async fn run(&mut self) -> TaskResult {
println!("hello");
Ok(())
}
}
#[tokio::main]
async fn main() {
let supervisor = SupervisorBuilder::default()
.with_task("printer", Printer)
.build()
.run();
supervisor.wait().await.unwrap(); // wait until every task finishes or is killed
}§What you get
- Automatic restarts – failed tasks are relaunched with exponential back-off.
- Dynamic control – add, restart, kill, or query tasks at runtime through a
SupervisorHandle. - Configurable – health-check interval, restart limits, back-off, dead-task threshold.
§Usage
Build a supervisor with SupervisorBuilder, call .build()
to get a Supervisor, then .run() to start it. This returns a
SupervisorHandle you use to control things at runtime:
| Method | Description |
|---|---|
wait().await | Block until the supervisor exits |
add_task(name, task) | Register and start a new task |
restart(name) | Force-restart a task |
kill_task(name) | Stop a task permanently |
get_task_status(name).await | Get a task’s TaskStatus |
get_all_task_statuses().await | Get every task’s status |
shutdown() | Stop all tasks and exit |
The handle auto-shuts down the supervisor when all clones are dropped.
§Clone and restart behaviour
Every task must implement Clone. The supervisor stores the original
instance and clones it each time the task is started or restarted.
Mutations made through &mut self in SupervisedTask::run only affect
the running clone and are lost on restart.
To share state across restarts, wrap it in an Arc (e.g. Arc<AtomicUsize>).
Plain owned fields will always start from their original value. See the
SupervisedTask docs for a full example.
§License
Structs§
- Supervisor
- Supervisor
Builder - Builds a
Supervisorwith configurable parameters. - Supervisor
Handle - Handle to interact with a running
Supervisor. Cheap to clone.
Enums§
Traits§
- Supervised
Task - The trait users implement for tasks managed by the supervisor.