RQ

Simple Python library for queueing jobs and processing them in the background with Redis or Valkey workers

Library
PyPI
v2.11.0
10,668stars
BSD-2-Clause

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum.How we score it →
90/100Excellent
Development Activity92
Maintenance84
Community84
Maturity60
Momentum40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation.How we score it →
81/100Excellent
Architecture80
Code Quality82
Innovation78
Learning Curve85

RQ (Redis Queue) is a lightweight Python library for creating background job queues and processing them asynchronously with worker processes. It is backed by Redis (or Valkey) and designed to have a low barrier to entry: any Python function can be enqueued without special decorators or a running message broker beyond Redis itself.

RQ has become a popular alternative to heavier task-queue systems like Celery for teams that want background job processing without the operational complexity of an AMQP broker. It supports job prioritization via multiple queues, scheduling, cron-style recurring jobs, retries, rate limiting, and webhooks for job lifecycle events, all while keeping the core API small enough to learn in minutes.

What You Get

  • A Queue class for enqueueing arbitrary Python functions as background jobs backed by Redis/Valkey
  • Worker processes (Worker, SimpleWorker, SpawnWorker, and worker-pool) that pull and execute jobs, with per-job process isolation and crash containment
  • Built-in job scheduling (enqueue_at, enqueue_in) and a cron-style scheduler (rq cron) for recurring tasks
  • Retry, repeat, and concurrency-based rate-limiting primitives for controlling how and how often jobs run
  • Webhook support that posts job status updates to an HTTP endpoint without writing a callback function
  • A CLI (rq worker, rq info, rq cron) for running and inspecting workers and queues

Common Use Cases

  • Offloading slow operations (sending email, generating reports, processing images) from a web request/response cycle
  • Running scheduled or cron-style maintenance jobs such as database cleanup or nightly report generation
  • Building a lightweight task-queue layer for a Flask/Django app without adopting Celery’s broker and configuration surface
  • Prioritizing urgent jobs ahead of bulk/low-priority work using multiple named queues

Under The Hood

Architecture - RQ’s core flow is Queue.enqueue() serializing a function reference plus arguments into a Job object stored in Redis, which a Worker process (or SimpleWorker/SpawnWorker) later pops via BRPOP-style blocking reads and executes, writing results and status transitions (queued -> started -> finished/failed) back into Redis-backed registries (registry.py). Scheduling and cron support (scheduler.py, cron.py) layer on top by pushing due jobs into the normal queue at the right time, and rate_limit.py/repeat.py add concurrency and re-execution semantics without changing this base model. Tech Stack - Pure Python 3.10+ with a deliberately small dependency set: redis-py for the Redis/Valkey client, click for the CLI, and croniter for cron expression parsing; packaging uses hatchling with dynamic versioning. Code Quality - The tests/ directory contains 41 test modules with roughly 700 test functions covering CLI behavior, connections, cron, callbacks, and worker lifecycle, indicating broad functional coverage; the codebase uses py.typed to expose type hints to consumers, and Ruff is used for linting per the CI badge in the README. API Design - The public API favors minimal ceremony: any plain function can be enqueued with no decorator or base class, and higher-level behaviors (retry, repeat, rate limiting, webhooks) are opt-in constructor objects (Retry(...), RateLimit(...), Webhook(...)) passed straight into enqueue(), keeping the common path (queue.enqueue(fn, arg)) a single line while still supporting advanced configuration.

Used by 5 apps in this directory

Python
59%
Apache 2.0

argilla

AI Development · Data Engineering

5,081

Collaborate on high-quality AI training data with a self-hosted annotation platform built for LLMs, NLP, and multimodal models.

View details
65
Repo Health
81
Technical
63
Dependency
Built with
Python59%
Jupyter Notebook21%
Updated 2 days ago
TypeScript
38%
Apache 2.0

Label Studio

AI Development · Data Engineering

28,083

Label Studio is an open-source, multi-type data labeling platform that lets teams annotate images, text, audio, video, and time series data with a configurable XML-based UI and export annotations in formats ready for any ML framework.

View details
93
Repo Health
87
Technical
68
Dependency
Built with
TypeScript38%
JavaScript27%
Python25%
Updated today
Python
84%
MIT

LiteLLM

AI Development · Developer Tools

56,720

Open source AI gateway and Python SDK that gives you one OpenAI-compatible interface to call 100+ LLM providers, with built-in routing, cost tracking, guardrails, and virtual keys.

View details
92
Repo Health
81
Technical
71
Dependency
Built with
Python84%
TypeScript14%
Updated today
TypeScript
55%
Other

Phase Console

Security · Devops

904

End-to-end encrypted secrets management for engineering teams — from local dev to Kubernetes production.

View details
84
Repo Health
73
Technical
67
Dependency
Built with
TypeScript55%
Python44%
Updated today
Python
45%
Other

Redash

Analytics · Data Engineering

28,754

Redash lets anyone connect to 35+ SQL and NoSQL data sources, write a query in the browser, and turn the result into a shared dashboard — no separate BI suite required.

View details
85
Repo Health
74
Technical
61
Dependency
Built with
Python45%
JavaScript31%
TypeScript17%
Updated yesterday

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers

Search