From 2589bf420232e466c6663c81acc5a0ccf30bc413 Mon Sep 17 00:00:00 2001 From: Pratyush Sharma <56130065+pratyush618@users.noreply.github.com> Date: Mon, 1 Jun 2026 06:45:17 +0530 Subject: [PATCH 1/2] docs(readme): regroup features, extend comparison table --- README.md | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 74 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 445b2ae..8502019 100644 --- a/README.md +++ b/README.md @@ -57,12 +57,78 @@ parallelism on CPU-bound work. ## Features -- **Reliability** — retries with exponential backoff, dead letter queue with replay, circuit breakers, exception filtering -- **Scheduling** — priorities, rate limiting, periodic (cron) tasks, delayed execution, job expiration -- **Workflows** — `chain` / `group` / `chord`, task dependencies with cascade cancel -- **Control** — cooperative cancellation, soft timeouts, unique/idempotent tasks, queue pause/resume -- **Observability** — web dashboard, events, HMAC-signed webhooks, structured logging, worker heartbeats -- **Extensibility** — pluggable serializers, per-task middleware, async API, Postgres/Redis backends +Grouped by what you're trying to do — each section has a one-line sample and a +link to its deep-dive guide. New here? Start with +**[Capabilities at a glance](https://docs.byteveda.org/taskito/docs/capabilities)**. + +### Reliability + +Retries with exponential backoff, per-exception retry rules, soft timeouts, a +dead-letter queue with replay, circuit breakers, and idempotent enqueue. + +```python +@queue.task(max_retries=5, retry_backoff=2.0, retry_on=[TimeoutError]) +def fetch_url(url: str) -> str: ... +``` + +[→ Reliability guide](https://docs.byteveda.org/taskito/docs/guides/reliability) + +### Workflows + +Compose tasks with `chain`, fan out with `group`, fan in with `chord` — plus +task dependency graphs with cascade cancel. + +```python +chain(fetch.s(url), parse.s(), store.s()).apply() +``` + +[→ Workflows guide](https://docs.byteveda.org/taskito/docs/guides/workflows/canvas) + +### Concurrency + +A thread pool by default (ideal for I/O-bound tasks); switch to a **prefork** +pool of child processes for true CPU parallelism with no GIL contention. + +```bash +taskito worker --pool prefork --app tasks:queue # CPU-bound: real parallelism +``` + +[→ Execution & prefork guide](https://docs.byteveda.org/taskito/docs/guides/advanced-execution/prefork) + +### Scheduling + +Priorities, rate limiting, periodic (cron) tasks, delayed execution, and job +expiration. + +```python +@queue.task(priority=9, rate_limit="100/m") +def notify(user_id: int) -> None: ... +``` + +[→ Scheduling guide](https://docs.byteveda.org/taskito/docs/guides/core/scheduling) + +### Observability + +A built-in web dashboard, an events system, HMAC-signed webhooks, Prometheus and +OpenTelemetry exporters, structured logging, and worker heartbeats. + +```bash +taskito dashboard --app tasks:queue # Flower-style monitoring UI +``` + +[→ Dashboard & monitoring guide](https://docs.byteveda.org/taskito/docs/guides/dashboard) + +### Extensibility + +Pluggable serializers, per-task middleware, a fully async API, and Postgres or +Redis backends for multi-machine workers. + +```python +@queue.task(middleware=[MyMiddleware()]) # per-task hooks +def handle(payload: dict) -> None: ... +``` + +[→ Extensibility guide](https://docs.byteveda.org/taskito/docs/guides/extensibility) ## Examples @@ -124,9 +190,11 @@ Coming from Celery? See the **[Migration Guide](https://docs.byteveda.org/taskit | Rate limiting | **Yes** | Yes | No | Yes | No | | Dead letter queue | **Yes** | No | Yes | No | No | | Task dependencies | **Yes** | No | No | No | No | +| Workflows (chain/group/chord) | **Yes** | Yes | No | Yes | No | | Built-in dashboard | **Yes** | No | No | No | No | | FastAPI integration | **Yes** | No | No | No | No | | Cancel running tasks | **Yes** | Yes | No | No | No | +| CPU parallelism (prefork pool) | **Yes** | Yes | Yes | Yes | Yes | | Postgres backend | **Yes** | Yes | No | No | No | | Setup | **`pip install`** | Broker + backend | Redis | Broker | Redis | From 84c70394e81dcb23ca847f0186cac9d0249d60f5 Mon Sep 17 00:00:00 2001 From: Pratyush Sharma <56130065+pratyush618@users.noreply.github.com> Date: Mon, 1 Jun 2026 06:45:17 +0530 Subject: [PATCH 2/2] docs: add Capabilities-at-a-glance overview page --- docs/content/docs/capabilities.mdx | 91 +++++++++++++++++++ .../docs/getting-started/installation.mdx | 5 + docs/content/docs/guides/index.mdx | 4 +- docs/content/docs/meta.json | 1 + 4 files changed, 100 insertions(+), 1 deletion(-) create mode 100644 docs/content/docs/capabilities.mdx diff --git a/docs/content/docs/capabilities.mdx b/docs/content/docs/capabilities.mdx new file mode 100644 index 0000000..4428da7 --- /dev/null +++ b/docs/content/docs/capabilities.mdx @@ -0,0 +1,91 @@ +--- +title: Capabilities at a glance +description: Everything taskito already does, in one place — with a link to the deep-dive guide for each. +--- + +import { Cards, Card } from "fumadocs-ui/components/card"; +import { + ShieldCheck, + Workflow, + Cpu, + CalendarClock, + Activity, + Plug, +} from "lucide-react"; + +taskito ships a broad feature set out of the box. If you're evaluating it — or +suspect a capability is missing — scan this page first. Every card links to the +guide that documents it. + +## If you think it's missing, it isn't + +These are the capabilities most often assumed absent. They aren't. + +| You might assume… | Reality | +| --- | --- | +| No canvas / workflows — no chain, group, or chord | [`chain` / `group` / `chord`](/guides/workflows/canvas) are exported from the top-level package, backed by a full workflow DSL. | +| No Flower-like dashboard | [`taskito dashboard --app myapp:queue`](/guides/dashboard) serves a built-in monitoring UI. | +| No retry backoff or per-exception retries | [`max_retries`, `retry_backoff`, `retry_on`, `dont_retry_on`](/guides/reliability/retries) are arguments on every task. | +| No soft timeouts | [`current_job.check_timeout()`](/guides/reliability/error-handling) gives cooperative soft timeouts. | +| GIL bottleneck with no escape hatch | [`--pool prefork`](/guides/advanced-execution/prefork) runs child processes with independent GILs for true CPU parallelism. | + +## By capability + + + } + title="Reliability" + href="/guides/reliability" + description="Retries with exponential backoff, per-exception rules, soft timeouts, dead-letter replay, circuit breakers, and idempotent enqueue." + /> + } + title="Workflows" + href="/guides/workflows/canvas" + description="Compose with chain, fan out with group, fan in with chord — plus dependency graphs with cascade cancel." + /> + } + title="Concurrency" + href="/guides/advanced-execution/prefork" + description="A thread pool for I/O-bound work and a prefork pool for true CPU parallelism, with a native async API." + /> + } + title="Scheduling" + href="/guides/core/scheduling" + description="Priorities, rate limiting, periodic (cron) tasks, delayed execution, and job expiration." + /> + } + title="Observability" + href="/guides/dashboard" + description="A built-in dashboard, events, HMAC-signed webhooks, Prometheus, OpenTelemetry, and structured logging." + /> + } + title="Extensibility" + href="/guides/extensibility" + description="Pluggable serializers, per-task middleware, a fully async API, and Postgres or Redis backends." + /> + + +## One-liners + +```python +# Reliability — backoff + per-exception retry rules +@queue.task(max_retries=5, retry_backoff=2.0, retry_on=[TimeoutError]) +def fetch_url(url: str) -> str: ... + +# Workflows — sequential pipeline (group / chord for fan-out / fan-in) +chain(fetch.s(url), parse.s(), store.s()).apply() + +# Scheduling — priority + rate limit +@queue.task(priority=9, rate_limit="100/m") +def notify(user_id: int) -> None: ... +``` + +```bash +taskito worker --pool prefork --app tasks:queue # CPU-bound: true parallelism +taskito dashboard --app tasks:queue # Flower-style monitoring UI +``` diff --git a/docs/content/docs/getting-started/installation.mdx b/docs/content/docs/getting-started/installation.mdx index fbccc19..fe3611b 100644 --- a/docs/content/docs/getting-started/installation.mdx +++ b/docs/content/docs/getting-started/installation.mdx @@ -5,6 +5,11 @@ description: "Install taskito and prepare your environment." import { Callout } from "fumadocs-ui/components/callout"; + + See [**Capabilities at a glance**](/capabilities) for everything taskito does — + workflows, retries, the dashboard, prefork pools — each with a link to its guide. + + ## From PyPI ```bash diff --git a/docs/content/docs/guides/index.mdx b/docs/content/docs/guides/index.mdx index 995172e..8a2374a 100644 --- a/docs/content/docs/guides/index.mdx +++ b/docs/content/docs/guides/index.mdx @@ -17,7 +17,9 @@ import { } from "lucide-react"; Pick the topic you're working through. Each guide is self-contained, with code -samples, gotchas, and links to the relevant API reference. +samples, gotchas, and links to the relevant API reference. For a one-page +overview of everything taskito does, see +[**Capabilities at a glance**](/capabilities).