# hibiken/asynq

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/hibiken-asynq).**

12,914 stars · 908 forks · Go · mit

## Links

- GitHub: https://github.com/hibiken/asynq
- awesome-repositories: https://awesome-repositories.com/repository/hibiken-asynq.md

## Topics

`asynchronous-tasks` `background-jobs` `go` `golang` `redis` `task-queue` `worker-pool`

## Description

Asynq is a distributed background job processing framework for Go applications. It manages asynchronous task queues by offloading heavy operations to persistent storage, allowing the main application to remain responsive while background workers handle workloads.

The system utilizes Redis to manage task state, concurrency, and message distribution across multiple worker instances. It employs atomic Lua scripting and sorted sets to ensure reliable job acquisition, precise scheduling of delayed tasks, and fault-tolerant processing through a two-stage acknowledgement flow.

The framework supports concurrent task execution to scale throughput across distributed environments. It provides capabilities for managing job priorities, retries, and recurring schedules to automate maintenance and background operations.

## Tags

### DevOps & Infrastructure

- [Distributed Task Queues](https://awesome-repositories.com/f/devops-infrastructure/distributed-task-queues.md) — Uses Redis to manage task queues, concurrency, and scheduled execution for background job processing.
- [Background Job Processing](https://awesome-repositories.com/f/devops-infrastructure/background-job-processing.md) — Offloads heavy operations to background workers to keep the main application responsive and improve overall system performance.
- [Distributed Worker Orchestration](https://awesome-repositories.com/f/devops-infrastructure/containerized-worker-orchestrators/distributed-worker-orchestration.md) — Spawns multiple independent processes that poll the shared data store to execute background tasks in parallel.

### Business & Productivity Software

- [Job Schedulers](https://awesome-repositories.com/f/business-productivity-software/task-workflow-automation/productivity-task-management/task-management/job-schedulers.md) — Provides a framework for executing asynchronous tasks across multiple worker instances with support for retries and priorities.

### Software Engineering & Architecture

- [Redis-Backed Queues](https://awesome-repositories.com/f/software-engineering-architecture/distributed-task-queues/redis-backed-queues.md) — Uses a persistent key-value store to manage job state and message distribution across distributed worker processes.
- [Concurrent Task Runners](https://awesome-repositories.com/f/software-engineering-architecture/concurrent-task-runners.md) — Scales processing power by running multiple background jobs in parallel across distributed worker instances.
- [Concurrent Task Limiters](https://awesome-repositories.com/f/software-engineering-architecture/concurrent-task-runners/concurrent-task-limiters.md) — Processes multiple background tasks in parallel across distributed worker instances to increase total throughput. ([source](https://github.com/hibiken/asynq/tree/master/docs/))

### Web Development

- [Persistent Background Workers](https://awesome-repositories.com/f/web-development/background-processing-workers/persistent-background-workers.md) — Offloads heavy operations to background processes to maintain application responsiveness and scale throughput.

### Development Tools & Productivity

- [Task Queuing Systems](https://awesome-repositories.com/f/development-tools-productivity/task-queuing-systems.md) — Manages asynchronous work queues using Redis as a persistent storage layer to ensure reliable task delivery.
- [Background Task Schedulers](https://awesome-repositories.com/f/development-tools-productivity/background-task-schedulers.md) — Offloads heavy operations to persistent storage for asynchronous processing so the main application remains responsive. ([source](https://github.com/hibiken/asynq/tree/master/docs/))
- [Job Schedulers](https://awesome-repositories.com/f/development-tools-productivity/job-schedulers.md) — Defines specific timestamps or recurring intervals for job execution to ensure automated maintenance. ([source](https://github.com/hibiken/asynq/tree/master/docs/))

### Part of an Awesome List

- [Messaging Systems](https://awesome-repositories.com/f/awesome-lists/devops/messaging-systems.md) — Distributed task queue built on top of Redis.
- [Messaging](https://awesome-repositories.com/f/awesome-lists/media/messaging.md) — Listed in the “Messaging” section of the Awesome Go awesome list.

### Programming Languages & Runtimes

- [Priority-based Sorted Sets](https://awesome-repositories.com/f/programming-languages-runtimes/programming-utilities/data-structure-type-helpers/data-structures/sorted-data-management/priority-based-sorted-sets.md) — Leverages sorted sets to efficiently track and trigger future tasks based on precise execution timestamps.

### Networking & Communication

- [Reliable Event Delivery Systems](https://awesome-repositories.com/f/networking-communication/communication-platforms-services/messaging-notification-systems/messaging-reliability/reliable-event-delivery-systems.md) — Implements a two-stage processing flow where jobs are moved to an in-progress state until successful completion or failure.
- [Work Polling](https://awesome-repositories.com/f/networking-communication/polling-and-webhook-clients/work-polling.md) — Employs a non-blocking polling mechanism that allows workers to dynamically claim pending jobs from the shared queue.
