FastWorker
FAQ

Frequently asked questions

Everything teams ask before adopting a brokerless Python task queue. Still stuck? Get in touch.

What is FastWorker?

FastWorker is an open-source (MIT) brokerless task queue for Python. It runs distributed background jobs using a control-plane process and direct NNG messaging instead of an external broker like Redis or RabbitMQ.

Do I really not need Redis or RabbitMQ?

Correct. FastWorker has no external broker and no separate result backend. Coordination happens over NNG between a control plane and one or more subworkers — typically 2–3 Python processes in total.

Is FastWorker a drop-in replacement for Celery?

It covers the same core workflow — define tasks, enqueue them, run workers — but with a different API (an async client and a control-plane/subworker model). Moving from Celery is a guided migration rather than a byte-for-byte swap. See the Celery migration guide.

How does FastWorker integrate with FastAPI?

FastWorker ships an async-native Client. You call await client.delay("task", ...) directly inside async FastAPI request handlers — no synchronous wrapper and no thread-pool bridge.

What scale is FastWorker designed for?

It targets Python-only stacks running roughly 1,000–10,000 tasks per minute across 1–50 workers. For extreme fan-out, very large fleets, or polyglot workers, a broker-based system may fit better.

How do priority queues work?

Four priority levels are built in — critical, high, normal, and low. Priority is a first-class argument on a task, and the control plane dispatches each task to the least-loaded subworker at the highest available priority.

Is there a dashboard?

Yes. A real-time management dashboard ships with the control plane and auto-starts at http://127.0.0.1:8080. It shows live workers, queue depth by priority, task history, and result-cache stats — no Flower or rq-dashboard required.

Can I trace tasks with OpenTelemetry?

Yes. FastWorker offers optional OpenTelemetry instrumentation that emits spans for submission, dispatch, and execution to any OTLP collector such as Jaeger or Honeycomb.

What are the requirements?

FastWorker requires Python 3.12 or newer. It is currently in alpha (v0.1.1) and MIT licensed. Install it with pip install fastworker or uv add fastworker.

How does result caching work?

The control plane keeps a configurable result cache (default 10,000 entries with a one-hour TTL). Expired entries are swept every minute. Both size and TTL are tunable via --result-cache-size and --result-cache-ttl.

Does FastWorker run on Windows?

FastWorker is a pure-Python package and targets Linux, macOS, and Windows wherever Python 3.12+ and NNG are available. Linux and macOS are the primary tested platforms.

Is FastWorker production-ready?

FastWorker is currently alpha software (v0.1.1). The core control-plane, dispatch, and dashboard work today, but APIs may change before 1.0. Evaluate it against your reliability needs and pin your version.