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