CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/pypi-django-rq

An app that provides django integration for RQ (Redis Queue)

Pending
Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

SecuritybySnyk

Pending

The risk profile of this skill

Overview
Eval results
Files

index.mddocs/

Django-RQ

Django integration for RQ (Redis Queue), a Python library for queueing jobs and processing them in the background with workers. Django-RQ provides seamless integration with Django's settings system, management commands for running workers, a web-based dashboard for monitoring queue status, and optional integrations with monitoring tools.

Package Information

  • Package Name: django-rq
  • Language: Python
  • Installation: pip install django-rq

Core Imports

import django_rq

For job decoration:

from django_rq import job

For queue and worker management:

from django_rq import get_queue, get_worker, get_connection, get_scheduler

Basic Usage

import django_rq
from django_rq import job

# Basic job enqueueing
def my_task(arg1, arg2):
    return arg1 + arg2

# Enqueue job to default queue
django_rq.enqueue(my_task, 10, 20)

# Using @job decorator
@job
def decorated_task():
    return "Hello from RQ!"

# Queue job using decorator
decorated_task.delay()

# Working with specific queues
queue = django_rq.get_queue('high')
queue.enqueue(my_task, 5, 15)

# Creating workers
worker = django_rq.get_worker('default', 'high')
worker.work(burst=True)

Architecture

Django-RQ extends RQ's core components with Django-specific features:

  • DjangoRQ Queue: Extended Queue class with Django settings integration and autocommit support
  • Management Commands: Django commands for worker management (rqworker, rqscheduler, etc.)
  • Web Dashboard: Admin interface for monitoring queues, jobs, and workers
  • Settings Integration: Configuration through Django's settings.py file
  • Prometheus Metrics: Optional monitoring integration
  • Template Tags: Django template helpers for displaying job information

Capabilities

Job Management

Core functionality for creating, enqueueing, and managing background jobs including job decoration, queue operations, and worker management.

def enqueue(func, *args, **kwargs):
    """Enqueue a job to the default queue."""

@job
def decorated_function():
    """Decorator to create RQ tasks."""

def get_queue(name='default', **kwargs):
    """Get a queue instance by name."""

def get_worker(*queue_names, **kwargs):
    """Get a worker instance for specified queues."""

Job Management

Queue Operations

Queue creation, configuration, and management including multiple queue support, Redis connection handling, and queue statistics.

def get_connection(name='default', use_strict_redis=False):
    """Get Redis connection for a queue."""

def get_queues(*queue_names, **kwargs):
    """Get multiple queue instances."""

class DjangoRQ:
    """Django-specific Queue class with autocommit support."""
    def enqueue_call(self, *args, **kwargs): ...

Queue Operations

Scheduling

Job scheduling functionality including delayed execution, periodic tasks, and scheduler management.

def get_scheduler(name='default', **kwargs):
    """Get scheduler instance for delayed/periodic jobs."""

class DjangoScheduler:
    """Django-specific Scheduler class."""
    def _create_job(self, *args, **kwargs): ...

Scheduling

Management Commands

Django management commands for worker control, queue monitoring, and system maintenance.

# Management commands (via manage.py)
# python manage.py rqworker [queues...]
# python manage.py rqscheduler
# python manage.py rqstats
# python manage.py rqsuspend
# python manage.py rqresume

Management Commands

Web Dashboard

Web-based monitoring interface for queues, jobs, workers, and statistics with Django admin integration.

# URL patterns for web interface
urlpatterns = [
    path('django-rq/', include('django_rq.urls'))
]

Web Dashboard

Monitoring & Integration

Prometheus metrics collection, Sentry integration, and Django-specific monitoring features.

from django_rq.utils import get_statistics, configure_sentry
from django_rq.contrib.prometheus import RQCollector

Monitoring & Integration

Configuration

Django-RQ is configured through Django settings:

# settings.py
RQ_QUEUES = {
    'default': {
        'HOST': 'localhost',
        'PORT': 6379,
        'DB': 0,
    },
    'high': {
        'HOST': 'localhost',
        'PORT': 6379,
        'DB': 0,
    }
}

# Optional settings
RQ = {
    'DEFAULT_RESULT_TTL': 500,
    'AUTOCOMMIT': True,
}

docs

index.md

job-management.md

management-commands.md

monitoring-integration.md

queue-operations.md

scheduling.md

web-dashboard.md

tile.json