RQ (Redis Queue)

2.7.0 · active · verified Fri Mar 27

Simple Python job queue backed by Redis or Valkey. Current version is 2.7.0. Requires Python >=3.9, Redis >=5 or Valkey >=7.2. Much simpler than Celery — no broker config, just a Redis connection. Key API change: job.result property removed in 1.12, replaced by job.return_value(). job.get_status() now returns a JobStatus enum, not a string.

Warnings

Install

Imports

Quickstart

Start Redis first, then run worker: rq worker. Functions must be in importable modules.

# tasks.py — functions must be in an importable module
def add(x, y):
    return x + y

def send_email(to, subject, body):
    # ... email logic
    return True


# enqueue.py — enqueue jobs
from redis import Redis
from rq import Queue
from tasks import add

redis_conn = Redis()
q = Queue(connection=redis_conn)

# Enqueue
job = q.enqueue(add, 4, 6)
print('Job ID:', job.id)

# Enqueue with options
job2 = q.enqueue(
    add, 10, 20,
    job_timeout=300,    # seconds before job is killed
    result_ttl=500,     # seconds to keep result in Redis
    retry=3             # retry on failure
)

# Check result (after worker runs)
import time
time.sleep(1)
print(job.return_value())  # 10
print(job.get_status())    # JobStatus.FINISHED

# --- Start worker in separate terminal ---
# rq worker

view raw JSON →