RQ (Redis Queue) integration for Flask applications


$ pip install flask-rq

Getting started

To quickly start using rq, simply create an RQ instance:

from flask import Flask
from flask.ext.rq import RQ

app = Flask(__name__)


@job decorator

Provides a way to quickly set a function as an rq job:

from flask.ext.rq import job

def process(i):
    #  Long stuff to process


A specific queue name can also be passed as argument:

def process(i):
    #  Long stuff to process


get_queue function

Returns default queue or specific queue for name given as argument:

from flask.ext.rq import get_queue

job = get_queue().enqueue(stuff)  # Creates a job on ``default`` queue
job = get_queue('low').enqueue(stuff)  # Creates a job on ``low`` queue

get_worker function

Returns a worker for default queue or specific queues for names given as arguments:

from flask.ext.rq import get_worker

# Creates a worker that handle jobs in ``default`` queue.
# Creates a worker that handle jobs in both ``default`` and ``low`` queues.
get_worker('default', 'low').work(True)
# Note: These queues have to share the same connection


By default Flask-RQ will connect to the default, locally running Redis server. One can change the connection settings for the default server like so:

app.config['RQ_DEFAULT_HOST'] = 'somewhere.com'
app.config['RQ_DEFAULT_PORT'] = 6479
app.config['RQ_DEFAULT_PASSWORD'] = 'password'
app.config['RQ_DEFAULT_DB'] = 1

Queue connection can also be set using a DSN:

app.config['RQ_LOW_URL'] = 'redis://localhost:6379/2'

Indices and tables