A lightweight web interface to monitor RQ queues, jobs, and workers in realtime
npx @tessl/cli install tessl/pypi-rq-dashboard@0.8.0A lightweight, general-purpose web interface to monitor Redis Queue (RQ) systems in realtime. RQ Dashboard provides comprehensive monitoring capabilities for RQ queues, jobs, and workers through an intuitive web interface that can be deployed as a standalone application or integrated into existing Flask applications.
pip install rq-dashboardimport rq_dashboardFor standalone CLI usage:
from rq_dashboard.cli import main, make_flask_appFor Flask integration:
from rq_dashboard import blueprint, default_settings# Run as command-line application
from rq_dashboard.cli import main
if __name__ == "__main__":
main()Command line usage:
# Basic usage with default settings
rq-dashboard
# With custom configuration
rq-dashboard --bind 0.0.0.0 --port 9181 --redis-url redis://localhost:6379
# With authentication
rq-dashboard --username admin --password secret
# Multiple Redis instances
rq-dashboard --redis-url redis://localhost:6379 --redis-url redis://localhost:6380from flask import Flask
from rq_dashboard import blueprint, default_settings
# Create Flask app
app = Flask(__name__)
# Configure with default settings
app.config.from_object(default_settings)
# Set Redis connection
app.config['RQ_DASHBOARD_REDIS_URL'] = 'redis://localhost:6379'
# Register the blueprint
app.register_blueprint(blueprint, url_prefix='/rq')
if __name__ == '__main__':
app.run()RQ Dashboard follows a modular architecture:
The dashboard provides both HTML views for human users and JSON API endpoints for programmatic access, making it suitable for both manual monitoring and integration with automated systems.
Complete standalone application with extensive configuration options for deployment flexibility. Supports authentication, multiple Redis instances, custom polling intervals, and various deployment scenarios including Docker and reverse proxy configurations.
def main():
"""Entry point for rq-dashboard console script."""
def run(bind, port, url_prefix, username, password, config, redis_url, poll_interval, debug, verbose, **kwargs):
"""
Run the RQ Dashboard Flask server with configuration options.
"""
def make_flask_app(config, username, password, url_prefix, compatibility_mode=True):
"""
Return Flask app with default configuration and registered blueprint.
Args:
config: Python module name for configuration
username: HTTP Basic Auth username
password: HTTP Basic Auth password
url_prefix: URL prefix for blueprint registration
compatibility_mode: Enable legacy configuration support
Returns:
Flask: Configured Flask application with RQ Dashboard
"""Flask blueprint for embedding RQ Dashboard into existing Flask applications. Provides complete web interface with HTML views and JSON API endpoints for monitoring queues, jobs, and workers.
blueprint: Blueprint
"""Main Flask blueprint for RQ Dashboard web interface."""
def setup_rq_connection(current_app):
"""
Set up Redis connection for RQ operations.
Args:
current_app: Flask application instance
"""
class Config:
"""Configuration container for RQ Dashboard settings."""
serializer: AnyAll CLI options can be configured via environment variables with RQ_DASHBOARD_ prefix:
RQ_DASHBOARD_REDIS_URL: Redis connection URL(s)RQ_DASHBOARD_POLL_INTERVAL: Web interface refresh interval in millisecondsRQ_DASHBOARD_DISABLE_DELETE: Disable job deletion capabilitiesRQ_DASHBOARD_SETTINGS: Path to configuration fileRQ_DASHBOARD_REDIS_URL: Redis URL (string or list for multiple instances)RQ_DASHBOARD_POLL_INTERVAL: Polling interval in milliseconds (default: 2500)RQ_DASHBOARD_DISABLE_DELETE: Disable delete operations (boolean)from typing import Optional, Union, List, Dict, Any
from flask import Blueprint, Flask
from redis import Redis
RedisUrl = Union[str, List[str]]
ConfigModule = Optional[str]
AuthCredentials = Optional[str]