Skip to main content

ARQ Optimus Dashboard

PyPI version Python versions License: MIT

Real-time monitoring dashboard and CLI for ARQ Optimus async task queues.

Features

  • Real-time Dashboard — Auto-refreshing web UI with queue stats, job listing, status filtering
  • Job Cancellation — Cancel queued/running jobs via dashboard or CLI using ARQ's native Job.abort()
  • Job Management CLI (arq-optimus) — Stats, list, info, cancel, delete from the terminal
  • Key Prefix Support — Works with ARQ Optimus key-prefix isolation for multi-project Redis
  • FastAPI Backend — High-performance async API with Redis connection pooling
  • Redis Cloud Support — Works with SSL/TLS connections

Installation

pip install arq-optimus-dashboard

This automatically installs arq-optimus as a dependency.

Dashboard

Start the Dashboard

# Basic usage
arq-optimus-dashboard --redis-url redis://localhost:6379

# With Redis Cloud (SSL)
arq-optimus-dashboard --redis-url rediss://:password@redis.example.com:6380

# With key prefix (must match your worker's key_prefix)
arq-optimus-dashboard --redis-url redis://localhost:6379 --key-prefix myproject

# Custom host and port
arq-optimus-dashboard --redis-url redis://localhost:6379 --host 127.0.0.1 --port 9000

# With basic auth
arq-optimus-dashboard --redis-url redis://localhost:6379 --username admin --password secret

Open your browser to http://localhost:8910 to see the dashboard.

Dashboard Features

  • Queue Statistics — Live counts of queued, running, completed, failed, cancelled jobs
  • Status Filtering — Filter jobs by status (queued / running / completed / failed / cancelled)
  • Job Details — Click any job to see arguments, result, timing, errors
  • Cancel Jobs — Cancel queued or running jobs with one click
  • Delete Jobs — Clean up completed/failed/cancelled job records
  • Auto-Refresh — Updates every 5 seconds

CLI (arq-optimus)

Manage jobs from the terminal without a dashboard:

# Queue statistics
arq-optimus stats --redis-url redis://localhost:6379

# List jobs (optionally filter by status)
arq-optimus list --redis-url redis://localhost:6379
arq-optimus list --redis-url redis://localhost:6379 --status running

# Job details
arq-optimus info <job_id> --redis-url redis://localhost:6379

# Cancel a job
arq-optimus cancel <job_id> --redis-url redis://localhost:6379

# Delete a completed/failed job
arq-optimus delete <job_id> --redis-url redis://localhost:6379

Using Key Prefix

# Via CLI flag
arq-optimus stats --redis-url redis://localhost:6379 --key-prefix myproject

# Or via environment variable
export ARQ_OPTIMUS_KEY_PREFIX=myproject
arq-optimus stats --redis-url redis://localhost:6379

REST API

The dashboard exposes a REST API:

Endpoint Method Description
/api/status GET Queue statistics
/api/jobs GET List jobs (query: ?status=running)
/api/jobs/count GET Job count by status
/api/jobs/{job_id} GET Job details
/api/jobs/{job_id}/cancel POST Cancel a job
/api/jobs/{job_id} DELETE Delete a job record

Job Tracking Setup

For the dashboard to track job status transitions (running → completed/failed), wrap your worker functions with tracking:

# arq_worker.py
from arq.connections import RedisSettings
from arq_optimus_dashboard.tracking import create_tracking_wrapper

async def my_task(ctx, arg):
    return f"processed {arg}"

class WorkerSettings:
    functions = [create_tracking_wrapper(my_task)]
    redis_settings = RedisSettings()
    key_prefix = 'myproject'

Django Integration

# settings.py
ARQ_OPTIMUS_KEY_PREFIX = 'my_project'

# arq_worker.py
from django.conf import settings
from arq.connections import RedisSettings
from arq_optimus_dashboard.tracking import create_tracking_wrapper

async def scrape_task(ctx, url):
    ...

class WorkerSettings:
    functions = [create_tracking_wrapper(scrape_task)]
    redis_settings = RedisSettings(host='redis.example.com', port=6379)
    key_prefix = getattr(settings, 'ARQ_OPTIMUS_KEY_PREFIX', '')

Compatibility

  • Python: 3.9+
  • Redis: 5, 6, 7+
  • ARQ Optimus: 0.27.0+

Credits

Built on top of ARQ Optimus by Arpan Sahu.

License

MIT License

Metadata

Release files for arq-optimus-dashboard 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for arq-optimus-dashboard 0.1.0
File Size Uploaded Provenance
arq_optimus_dashboard-0.1.0.tar.gz 25.2 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for arq-optimus-dashboard 0.1.0
File Interpreter ABI Platform
arq_optimus_dashboard-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 54.5 kB

Release files / arq_optimus_dashboard-0.1.0.tar.gz

Download URL arq_optimus_dashboard-0.1.0.tar.gz
Size 25.2 kB
Tags Source
SHA-256 checksum
How to use checksums
4ca41918a187d58b8b27edffaed146781b696c673950a4ae18a20993f1684999
BLAKE2b-256 checksum
How to use checksums
fedbc46476fbd40c03c9465e2b3b0706063b3bc345d51814cc27851a4df41581
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.10.7

Release files / arq_optimus_dashboard-0.1.0-py3-none-any.whl

Download URL arq_optimus_dashboard-0.1.0-py3-none-any.whl
Size 29.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7602e2117f20018f7f0fd28adfc95aa70b2a27b9c68147167f9f2e92a2d49ea8
BLAKE2b-256 checksum
How to use checksums
1aba2c18e887366c04145fc931ba5acc9ea42801b2c96c9d9b6d54cd8f2171e1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.10.7

Security for arq-optimus-dashboard 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page