Task Queues & Scheduling

rq

Redis Queue: the no-fuss little brother of Celery, for teams who just want background jobs without the manual.

Install it: pip install rq

What does it do?

RQ, short for Redis Queue, lets a Python program push a task, like process this uploaded image, onto a list stored in Redis, a fast in-memory database, where a separate worker process picks it up and runs it whenever it’s free. It deliberately does far less than Celery: no elaborate configuration, no dozens of options, just a simple queue and workers that pull from it. That simplicity is the entire pitch, since you can understand RQ’s whole design in an afternoon.

See it in action

This queues up a ‘send an email’ job to be handled later by a separate background worker, instead of making the program wait for it right now.

from redis import Redis
from rq import Queue

def send_email(address):
    print(f"Sending email to {address}")

queue = Queue(connection=Redis())
job = queue.enqueue(send_email, "user@example.com")
print(job.id)

Why would a non-developer care?

Not every company needs an industrial-strength task queue with every bell and whistle; many just need to run this thing later, off the main page load, without a steep learning curve. RQ exists for exactly that gap, which is why smaller teams and side projects gravitate toward it.

Real-world examples

RQ was created by Vincent Driessen, also known for popularizing the gitflow branching model, and it’s become the go-to recommendation for Python developers who tried Celery and found it overkill for their needs. A small startup sending a handful of background emails a day doesn’t need Celery’s message-broker flexibility, it needs something it can set up before lunch, which is RQ’s whole reason for existing.

Who uses it

Small teams and solo developers who need simple background job processing without Celery’s configuration overhead.

How it compares to alternatives

It sits directly against Celery, trading flexibility and broker choice, since RQ only works with Redis, for radical simplicity, and against Dramatiq, which offers a similarly lightweight feel but with different design opinions.

New to Python and want to actually try libraries like this yourself?

Find a beginner-friendly course

Related libraries