skillfed

arq

Job queues in python with asyncio and redis

arq v0.28.0 4.7M downloads/30d#2,254 on PyPI3,000
Permissive license MIT Active released

What it is and what it does

arq is a job queue library that lets you offload work from your main Python application to background workers using asyncio and Redis. It sits between your application and a Redis instance, allowing you to enqueue tasks that execute asynchronously on one or more worker processes. The package is designed for developers building async Python applications who need reliable background job execution without the overhead of a full message broker like RabbitMQ or Kafka.

The library is currently in maintenance-only mode, meaning it is stable and receives bug fixes and security updates but is not actively gaining new features. It supports Python 3.9 through 3.14 and has a permissive MIT license. Its two runtime dependencies—click and redis—are both widely used and well-maintained, keeping the installation footprint small.

Use it for:

  • Offload long-running computations from a web request handler to execute asynchronously in the background
  • Distribute batch processing tasks across multiple worker processes on the same or different machines
  • Schedule periodic or one-time jobs to run at specific times without blocking the main application
  • Build a microservice that consumes work items from a shared Redis queue and processes them in parallel
  • Implement retry logic and error handling for tasks that may fail transiently

Worth the install?

AI-flagged interpretation of the facts on this page — verify before relying

arq provides a job queue system for Python that uses asyncio and Redis to run background tasks asynchronously and distribute work across multiple workers.

Yes, if you need a lightweight async job queue backed by Redis and are comfortable with maintenance-only mode. The low install friction, permissive license, broad Python version support, and zero known vulnerabilities make it a solid choice for background task processing in async applications. Not suitable if you require active feature development or prefer a more feature-rich task queue.

Install

arq on PyPI

pip

pip install arq

uv

uv add arq

poetry

poetry add arq

Installing arq

Before you install

Low friction installation with only two runtime dependencies (click and redis). The package is in maintenance-only mode but remains actively maintained; the last commit was recent and the repository is not archived, suggesting stability rather than abandonment.

License in practice

MIT license is permissive, allowing use in commercial and proprietary projects with minimal restrictions beyond attribution.

Quickstart

pip install arq

from arq import create_pool
import asyncio

async def my_job(ctx):
    return 'done'

async def main():
    redis = await create_pool('redis://localhost')
    job = await redis.enqueue_job('my_job')

asyncio.run(main())

Requires a running Redis server accessible at the configured URL; Python 3.9 or later.

Verify before relying

  • Whether maintenance-only mode implies no new features or breaking changes will be accepted
  • Performance characteristics and scalability limits for typical workloads
  • Whether the package handles task retry logic, scheduling, or only basic queueing

Package facts

License MIT (permissive)
Python support supports the current Python release (>=3.9)
Install friction low — pure-Python wheel
Runtime dependencies 2 — click, redis
Maintenance actively maintained — 120 days since the last release
Last repo commit
First released
Downloads 4,687,723/month — #2,254 on PyPI (30-day window, as of 2026-08-14)
Known vulnerabilities none known (OSV.dev, checked 2026-08-14)

Evidence: arq-0.28.0-py3-none-any.whl

Development Status :: 5 - Production/StableEnvironment :: ConsoleFramework :: AsyncIOIntended Audience :: DevelopersIntended Audience :: Information TechnologyIntended Audience :: System AdministratorsLicense :: OSI Approved :: MIT LicenseOperating System :: POSIX :: LinuxOperating System :: UnixProgramming Language :: PythonProgramming Language :: Python :: 3Programming Language :: Python :: 3 :: OnlyProgramming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14Programming Language :: Python :: 3.9Topic :: InternetTopic :: Software Development :: Libraries :: Python ModulesTopic :: System :: ClusteringTopic :: System :: Distributed ComputingTopic :: System :: MonitoringTopic :: System :: Systems Administration

Tags

async job queue pythonbackground task queue redisdistributed task processingasyncio worker poolredis-backed job schedulerpython async task runnerbackground job management
async-firstredis-backedtask-queue

More Python Modules packages