A minimal async task queue inspired by Celery — built from scratch with Tokio and Axum.
- Learn
tokio::syncprimitives: channels, semaphores - Build a concurrent worker pool with bounded parallelism
- Handle job retries with exponential backoff
- Ship a real HTTP API with
axum
cargo runThe server listens on http://localhost:3000.
curl -X POST http://localhost:3000/jobs \
-H "content-type: application/json" \
-d '{"kind": "echo", "data": {"msg": "hello"}}'
# → {"id": "<uuid>"}curl http://localhost:3000/jobs/<id>curl http://localhost:3000/jobs
curl "http://localhost:3000/jobs?status=completed"curl -X DELETE http://localhost:3000/jobs/<id>| kind | data fields | what it does |
|---|---|---|
echo |
any | returns the payload unchanged |
sleep |
ms (number) |
sleeps N milliseconds, returns {slept_ms} |
fail |
any | always errors (for testing retry) |
Work in progress — not production ready.