apalis 0.5.5

Simple, extensible multithreaded background job processing for Rust
Documentation
[workspace.package]
edition = "2021"
repository = "https://github.com/geofmureithi/apalis"

[package]
name = "apalis"
version = "0.5.5"
authors = ["Geoffrey Mureithi <mureithinjuguna@gmail.com>"]
description = "Simple, extensible multithreaded background job processing for Rust"
edition.workspace = true
repository.workspace = true
documentation = "https://docs.rs/apalis"
readme = "README.md"
license = "MIT OR Apache-2.0"
keywords = ["job", "task", "scheduler", "worker", "cron"]
categories = ["database"]

[lib]
bench = false

[features]
default = ["tracing", "tokio-comp"]

## Include redis storage
redis = ["apalis-redis"]
## Include Postgres storage
postgres = ["apalis-sql/postgres"]
## Include SQlite storage
sqlite = ["apalis-sql/sqlite"]
## Include MySql storage
mysql = ["apalis-sql/mysql"]
## Include Cron functionality
cron = ["apalis-cron"]

## Support Tracing 👀
tracing = ["dep:tracing", "dep:tracing-futures"]

## Support for Sentry exception and performance monitoring
sentry = ["sentry-core", "ulid?/uuid", "uuid"]
## Support Prometheus metrics
prometheus = ["metrics", "metrics-exporter-prometheus"]
## Support direct retrying jobs
retry = ["tower/retry"]
## Support timeouts on jobs
timeout = ["tower/timeout"]
## 💪 Limit the amount of jobs 
limit = ["tower/limit"]
## Support filtering jobs based on a predicate
filter = ["tower/filter"]
## Compatibility with async-std and smol runtimes
async-std-comp = [
  "apalis-sql?/async-std-comp",
  "apalis-redis?/async-std-comp",
  "apalis-cron?/async-std-comp",
  "async-std",
]
## Compatibility with tokio and actix runtimes
tokio-comp = [
  "apalis-sql?/tokio-comp",
  "apalis-redis?/tokio-comp",
  "apalis-cron?/tokio-comp",
  "tokio",
]

layers = [
  "sentry",
  "prometheus",
  "tracing",
  "retry",
  "timeout",
  "limit",
  "filter",
]

docsrs = ["document-features"]

[dependencies.apalis-redis]
version = "0.5.5"
optional = true
path = "./packages/apalis-redis"
default-features = false

[dependencies.apalis-sql]

version = "0.5.5"
features = ["migrate"]
optional = true
default-features = false
path = "./packages/apalis-sql"

[dependencies.apalis-core]
version = "0.5.5"
default-features = false
path = "./packages/apalis-core"

[dependencies.apalis-cron]
version = "0.5.5"
optional = true
default-features = false
path = "./packages/apalis-cron"

[dependencies.document-features]
version = "0.2"
optional = true


[package.metadata.docs.rs]
# defines the configuration attribute `docsrs`
rustdoc-args = ["--cfg", "docsrs"]
all-features = true


[dev-dependencies]
criterion = { version = "0.5.1", features = ["async_tokio", "html_reports"] }
pprof = { version = "0.13", features = ["flamegraph"] }
paste = "1.0.14"
serde = "1"
tokio = { version = "1", features = ["macros", "rt-multi-thread"] }
apalis = { path = ".", features = ["redis", "sqlite", "postgres", "mysql"] }
redis = { version = "0.25.3", default-features = false, features = [
    "script",
    "aio",
    "connection-manager",
] }

[dev-dependencies.sqlx]
version = "0.8.1"
default-features = false
features = ["chrono", "mysql", "sqlite", "postgres"]


[[bench]]
name = "storages"
harness = false

[workspace]
members = [
  "packages/apalis-core",
  "packages/apalis-redis",
  "packages/apalis-sql",
  "packages/apalis-cron",
  # Examples
  "examples/email-service",
  "examples/redis",
  "examples/actix-web",
  "examples/sqlite",
  "examples/sentry",
  "examples/mysql",
  "examples/postgres",
  "examples/axum",
  "examples/prometheus",
  "examples/tracing",
  # "examples/rest-api",
  "examples/async-std-runtime",
  "examples/basics",
]


[dependencies]
tokio = { version = "1", features = [
  "rt",
], default-features = false, optional = true }
async-std = { version = "1", optional = true }
tower = { version = "0.5", features = ["util"], default-features = false }
tracing-futures = { version = "0.2.5", optional = true, default-features = false }
sentry-core = { version = "0.34.0", optional = true, default-features = false }
metrics = { version = "0.23.0", optional = true, default-features = false }
metrics-exporter-prometheus = { version = "0.15", optional = true, default-features = false }
thiserror = "1.0.59"
futures = "0.3.30"
pin-project-lite = "0.2.14"
# Needed only for sentry reporting
uuid = { version = "1.8", optional = true }
ulid = { version = "1", optional = true }
serde = { version = "1.0", features = ["derive"] }

[dependencies.tracing]
default-features = false
version = "0.1.40"
optional = true