finds.dev← search

// the find

hibiken/asynq

★ 13,366 · Go · MIT · updated Jun 2026

Simple, reliable, and efficient distributed task queue in Go

Asynq is a Redis-backed distributed task queue for Go — you enqueue tasks from one process and worker servers pull and execute them concurrently. It covers the standard background-job feature set: retries, scheduling, priority queues, deduplication, and timeouts. Good fit for Go shops that already run Redis and want something simpler than Celery or Sidekiq without standing up a separate message broker.

The ServeMux API mirrors net/http so the learning curve is nearly zero for Go developers. Weighted and strict priority queues are first-class, not bolted on. Task aggregation (batching multiple enqueues into a single handler invocation) is a genuinely useful feature most queuing libraries skip. Asynqmon (the web UI) and the terminal dashboard are polished and actually useful for debugging stuck or failed tasks in production.

Still on v0.x with an explicit warning that APIs can break before 1.0 — that's a real risk if you're building something you don't want to rewrite. Redis Cluster support is explicitly incomplete due to Lua script key-slot constraints, so horizontal Redis scaling is off the table without sharding yourself. No native support for exactly-once delivery — the 'at least once' guarantee means idempotency is entirely your problem. The payload is raw bytes with manual JSON marshaling/unmarshaling boilerplate; there's no typed task registry, so a typo in a task type string silently routes to nothing.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →