[package]
name = "taskvisor"
version = "0.4.1"
edition = "2024"
rust-version = "1.90.0"
description = "Task supervisor for Tokio: restarts background tasks on failure with exponential backoff and jitter, graceful shutdown, and lifecycle events"
repository = "https://github.com/soltiHQ/taskvisor"
documentation = "https://docs.rs/taskvisor"
license = "Apache-2.0"
readme = "README.md"
keywords = ["supervisor", "tokio", "retry", "restart", "backoff"]
categories = ["asynchronous", "concurrency"]
exclude = [
".env",
".github/",
".gitignore",
"Taskfile.yml",
"rust-toolchain.toml",
]
[features]
controller = ["dep:dashmap"]
default = []
logging = []
test-util = []
tracing = ["dep:tracing"]
tokio-util-interop = []
[package.metadata.docs.rs]
features = ["logging", "tracing", "controller", "tokio-util-interop", "test-util"]
rustdoc-args = ["--cfg", "docsrs"]
[dependencies]
tokio = { version = "1.52.3", features = ["rt-multi-thread", "macros", "time", "sync", "signal"] }
tokio-util = "0.7.18"
thiserror = "2.0.18"
fastrand = "2.4.1"
dashmap = { version = "6.1.0", optional = true }
tracing = { version = "0.1.44", optional = true, default-features = false, features = ["std"] }
[dev-dependencies]
criterion = { version = "0.8.2", features = ["async_tokio"] }
tracing-subscriber = { version = "0.3.23", default-features = false, features = ["fmt", "env-filter", "ansi"] }
prometheus = { version = "0.14.0", default-features = false }
rayon = "1.12.0"
[[example]]
name = "slots"
required-features = ["controller"]
[[example]]
name = "admission"
required-features = ["controller"]
[[example]]
name = "tracing"
required-features = ["tracing"]
[[bench]]
name = "lifecycle"
harness = false
[[bench]]
name = "throughput"
harness = false
[[bench]]
name = "fanout"
harness = false
[[bench]]
name = "dynamic"
harness = false
[[bench]]
name = "controller"
harness = false
required-features = ["controller"]
[[test]]
name = "controller"
required-features = ["controller"]