For an async task queue for Python background jobs, the strongest matches are rq/rq (rq is a well-established Python task queue and background), coleifer/huey (Huey is a task queue for Python that supports) and celery/celery (Celery is a mature distributed task queue for Python). agenda/agenda and whyour/qinglong round out the shortlist. Each is ranked by relevance to your query, popularity and recent activity.
Distributed message brokers and job processing libraries for managing background tasks in Python applications.
rq is a distributed task queue and background worker system for Python that uses a Redis backend to decouple task submission from execution. It functions as a reliable message queue and task scheduler, allowing Python functions or asyncio coroutines to be processed asynchronously across multiple worker processes. The project distinguishes itself through reliable queuing mechanisms that prevent job loss during worker crashes using atomic operations. It provides specialized orchestration capabilities, including the prevention of duplicate jobs, job execution prioritization, and the ability to m
rq is a well-established Python task queue and background job processor that uses Redis as its broker, supports asyncio coroutines, and provides scheduled tasks, automatic retries, result persistence, and monitoring—making it a comprehensive fit for this search.
.. image:: https://media.charlesleifer.com/blog/photos/huey3-logo.png
Huey is a task queue for Python that supports Redis and SQLite backends with scheduling and retries, but its consumers use threads or greenlets rather than native asyncio, so it does not fully match the request for async/await-first libraries.
Celery is an asynchronous job processor and distributed task queue designed to offload time-consuming operations to background worker nodes. By utilizing a message-passing architecture, it decouples task producers from consumers, allowing applications to maintain responsiveness while scaling workloads across multiple isolated environments. The system functions as a distributed workload orchestrator that manages the lifecycle of deferred operations through persistent queues. It distinguishes itself by providing a pluggable transport abstraction, which allows the core task logic to remain indep
Celery is a mature distributed task queue for Python, but its worker model is not asyncio-native—it relies on its own event loop or third-party integration—so while it squarely covers the task queue category, you may need additional setup for native async/await support.
Agenda is a persistent background job scheduler and distributed task runner for Node.js applications. It functions as a cron job manager and task queue that ensures background processes survive application restarts by storing job state and metadata in a database. The system coordinates execution across multiple worker instances using distributed locking mechanisms to prevent duplicate processing. It supports flexible scheduling via cron expressions or specific dates and includes a pluggable storage interface for backends such as MongoDB, PostgreSQL, and Redis. The platform provides controls
Agenda is a background job scheduler and task runner built for Node.js, not Python, so it does not meet the requirement for a Python-native task queue with asyncio support.
Qinglong is a containerized task scheduler and automation platform designed to orchestrate recurring background jobs. It provides a centralized dashboard for managing, scheduling, and executing scripts across multiple programming languages, ensuring consistent environments through isolated container-based execution. The platform distinguishes itself by integrating remote repository synchronization, allowing users to clone and update external script collections directly within the system. It combines this with comprehensive environment variable management, enabling the secure storage of creden
Qinglong is a containerized task scheduler and automation platform with a dashboard and cron-like scheduling, but it is not a Python library or framework for async task queues — it is a standalone application written in TypeScript that manages scripts across languages, lacking the asyncio-native API and broker integration you are looking for.
Cronicle is a distributed job scheduler that replaces traditional cron with a browser-based management interface. It runs scheduled tasks across a cluster of servers with automatic failover, using a custom cron parser that intersects day-of-month and day-of-week constraints when both are specified. The system executes jobs through a plugin framework that runs command-line scripts in any language, communicating via JSON over standard input and output. The scheduler provides a web-based real-time dashboard for monitoring running jobs with live logs, resource usage charts, and progress updates.
Cronicle is a distributed job scheduler with a web dashboard, not a Python library — it runs command-line scripts from any language rather than providing an asyncio-native API for managing background jobs from within a Python application.
Machinery is a distributed task queue and asynchronous workflow engine. It provides a system for processing heavy workloads outside the main request flow using a network of distributed background workers and a message-based job orchestrator. The project manages complex task lifecycles through sequential chaining, where results are passed between tasks, and parallel coordination, which can trigger callback tasks upon the completion of a group. It supports periodic workflow scheduling for recurring jobs and delayed execution via specific timestamps. The system includes capabilities for result
Machinery is a distributed task queue and workflow engine, but it is written in Go, not Python, so it does not match the request for a Python library with asyncio support.
Healthchecks is a heartbeat monitoring service and cron job monitoring tool designed to track the execution and success of scheduled tasks and systemd timers. It functions as a dead man switch, alerting users when expected periodic signals from remote processes fail to arrive. The system accepts health signals via HTTP and SMTP, allowing it to track infrastructure heartbeats from sources ranging from CI/CD workflows to network routers. It distinguishes itself by supporting the capture of diagnostic data, including exit codes and execution logs, and by calculating the duration between start an
Healthchecks monitors the execution of scheduled tasks via heartbeats and alerts on failures, but it is a monitoring tool rather than an async task queue or background job processor — it does not manage, execute, or persist jobs itself.
Kestra is a declarative workflow orchestrator designed to manage complex task dependencies and automated processes through versioned configuration files. It functions as a distributed platform that decouples task scheduling from execution by offloading computational workloads to a fleet of worker nodes. The system uses a reactive, event-driven engine to initiate workflows automatically in response to external signals, webhooks, schedules, or file system changes. The platform distinguishes itself through a modular plugin architecture that allows for the integration of custom tasks and external
Kestra is a workflow orchestrator focused on complex dependency management and event-driven automation, but it is a Java-based distributed platform rather than a Python async library for background jobs, and it lacks the native asyncio integration and broker-based task queue model you are looking for.
Hatchet is an open-source durable workflow engine and task orchestration platform. It provides a framework for building and executing fault-tolerant, multi-step pipelines as directed acyclic graphs (DAGs), with automatic retries, scheduling, and real-time observability. The system is built around durable task checkpointing, which persists execution state after each step so work can resume from the last checkpoint after a worker crash or restart, and it supports event-driven task resumption that pauses a task until a matching external event arrives. The platform distinguishes itself through it
Hatchet is a Go-based durable workflow engine that offers Python client support, but it is not a native Python library for background job processing; it is a full orchestration platform for DAGs, making it more of an adjacent category to the simple async job queue you're looking for.
Prefect is a workflow orchestration platform designed to define, schedule, and monitor complex data pipelines as Python code. It functions as a container-native engine that wraps individual tasks in isolated environments, ensuring consistent dependencies and resource allocation across diverse infrastructure. By utilizing a state-machine-based orchestration model, the system tracks execution progress through discrete transitions and persistent event logs to maintain reliable and observable task processing. The platform distinguishes itself through a decoupled worker-API architecture, which sep
Prefect is a workflow orchestration platform for data pipelines rather than a lightweight async task queue for background jobs; it overlaps in scheduling and monitoring but is designed for complex data workflows, not general-purpose asynchronous job processing.
NSQ is a distributed, brokerless messaging platform designed for high-throughput, fault-tolerant communication. By utilizing a decentralized topology, it eliminates single points of failure and allows for horizontal scaling across clusters. The system organizes message streams into topics and channels, effectively decoupling producers from consumers to support both streaming and job-oriented workloads. The platform distinguishes itself through a lookup-service-based discovery mechanism that enables clients to dynamically locate producers at runtime without requiring centralized coordination.
NSQ is a distributed messaging platform in Go, not a Python library for background jobs; while it can serve as a message broker, it lacks asyncio-native integration and the task-management features (scheduling, retries, dashboard) you need.
| Repository | Stars | Language | License | Last push |
|---|---|---|---|---|
| rq/rq | 10.7K | Python | NOASSERTION | |
| coleifer/huey | 5.9K | Python | mit | |
| celery/celery | 28.6K | Python | NOASSERTION | |
| agenda/agenda | 9.7K | HTML | NOASSERTION | |
| whyour/qinglong | 19.2K | TypeScript | apache-2.0 | |
| jhuckaby/cronicle | 5.7K | JavaScript | NOASSERTION | |
| richardknop/machinery | 8K | Go | MPL-2.0 | |
| healthchecks/healthchecks | 9.9K | Python | bsd-3-clause | |
| kestra-io/kestra | 27.1K | Java | Apache-2.0 | |
| hatchet-dev/hatchet | 6.6K | Go | mit |