On this page
Overview
RQ (Redis Queue) turns Python function calls into background jobs stored in Redis or Valkey and processed by independent workers. It provides priority queues, retries, scheduling, repeating jobs, uniqueness, and webhooks through a relatively small API.
Features and best fit
Based on official documentation; not hands-on tested · Content checked:
Key features
Enqueue Python functions and process them in independent workers
Queue.enqueue() stores a Python function call and arguments as a job in Redis or Valkey, while rq worker processes jobs in a separate worker process. Multiple queues such as high and low can be ordered for priority handling.
Sources: [2]
Best fit
Fits Python backends that want background work with an existing Redis deployment
It works well for email delivery, report generation, image processing, and similar work that should leave the request path without introducing a larger broker stack, especially when Redis or Valkey already exists in the service.
Sources: [2]
Before adoption
RQ 2.12 requires Python 3.10+ and Redis 5+ or Valkey 7.2+; review pickle and worker choices
RQ 2.12 requires Python 3.10 or newer and Redis 5+ or Valkey 7.2+. The default serializer uses pickle and is unsafe with untrusted Redis data, so use only trusted instances or a safer serializer. Production guidance favors Worker or SpawnWorker for isolation and hard timeouts, with SimpleWorker reserved for measured short-job bottlenecks.
Official sources
- [1]rq/rq — GitHub repository(2026-10-06)
- [2]RQ 2.12 — README(2026-10-06)
- [3]RQ 2.12 — pyproject.toml(2026-10-06)
- [4]RQ 2.12 release(2026-10-06)
- [5]RQ BSD-2-Clause license(2026-10-06)
Supplemental curator note
RQ is a strong fit when an existing Redis deployment can support a small background-job stack. The default pickle serializer and worker isolation model directly affect the trust boundary, so decide those choices before production rollout.
Try it in 3 steps
- 1
Install RQ 2.12
Pin the reviewed stable release. Python 3.10 or newer and a trusted Redis 5+ or Valkey 7.2+ instance are required.
python -m pip install "rq==2.12" - 2
Create a job to enqueue
Create a minimal function and enqueue script without external HTTP access. Redis or Valkey is expected to be running on localhost.
cat > tasks.py <<'PY' def add(x, y): return x + y PY cat > enqueue.py <<'PY' from redis import Redis from rq import Queue from tasks import add q = Queue(connection=Redis()) job = q.enqueue(add, 2, 3) print(job.id) PY - 3
Start a worker and enqueue the job
Start the worker, enqueue the job from another terminal, and confirm successful execution in the worker log. The default serializer uses pickle, so only use trusted Redis data.
rq worker # In another terminal: python enqueue.py
Growth
Growth trends · Last 30 days
10,693 Stars
Trend data is still being collected.
Built with
Categories and tags
Categories
GitHub data
GitHub dataView detailed GitHub data
GitHub Topics
- async
- background-jobs
- delayed-jobs
- delayed-tasks
- job-queue
- python
- redis
- rq
- task
- task-queue
- workers
- Stars
- 10,693
- Forks
- 1,503
- Watchers
- 194
- Open issues
- 261
- Contributors
- 316
- Owner type
- Organization
- Primary language
- Python
- License
- BSD-2-Clause
- Repository last updated
- Oct 3, 2026
Related information
Write a related articleShare a guide or use case for this OSS in Markdown. Articles are published after administrator approval.
Explore next
- Apache Airflow47,064 Stars
2 shared tag(s) · 1 shared category(s) · Same language
orchestrate data, ML, and AI workflows with code-defined DAGs
Python - OpenTelemetry Python2,656 Stars
2 shared tag(s) · 1 shared category(s) · Same language
instrument Python traces, metrics, and logs through the OpenTelemetry API and SDK
Python - Asynq13,748 Stars
2 shared tag(s) · 1 shared category(s)
distribute background tasks to Redis-backed worker queues with retries and scheduling
Go - NATS Go Client6,770 Stars
2 shared tag(s) · 1 shared category(s)
use Core NATS Pub/Sub and persistent JetStream messaging through one Go client
Go - Dask13,932 Stars
2 shared tag(s) · Same language
scale parallel analytics with NumPy/pandas-like collections and lazy task graphs
Python - TensorFlow200,710 Stars
2 shared tag(s)
machine-learning infrastructure with important Python and dependency changes in 2.21
C++
Report incorrect information
Tell us if any listing information is incorrect or outdated.