🦬 BuffaloMQ
A lightweight, production-grade Redis job queue for Python with a built-in real-time Web Dashboard.
BuffaloMQ provides a simple, reliable, and dependency-light alternative to heavy task queues like Celery. It leverages Redis and atomic Lua scripts for crash resilience, delayed scheduling, visibility timeouts, and DLQ management — complete with a zero-config web dashboard CLI.
🛠 Tech Stack
- Core & Broker: Python 3.9+ & Redis (via atomic Lua scripts)
- Dashboard Server: FastAPI & Uvicorn
- Dashboard Frontend: React 18, TypeScript, Vite
✨ Features
- ⚡ Lightweight & Fast: Pure Python API powered by atomic Redis Lua operations.
- 🖥 Zero-Config Web Dashboard: Launch a real-time monitoring UI with a single CLI command (
buffalomq dashboard). - 🔄 Job Retries & Backoff: Configurable retry limits and exponential backoff.
- ⏱ Delayed Jobs: Schedule tasks to run after a specific delay.
- 🔒 Crash Recovery: Visibility timeouts & heartbeat threads prevent lost jobs if a worker crashes.
- ⏸ Queue Controls & DLQ Re-drive: Pause/resume queues and re-drive failed jobs straight from the dashboard or API.
📦 Installation
pip install buffalomq
🚀 Quickstart
1. Submit Jobs (Producer)
import redis
from buffalomq import Queue
r = redis.Redis(host='localhost', port=6379, db=0)
queue = Queue("email-notifications", r)
# Enqueue immediate job
queue.add({"to": "user@example.com", "subject": "Welcome!"})
# Enqueue delayed job (runs after 30s) with 3 max retries
queue.add({"to": "user@example.com", "subject": "Reminder"}, options={"delay": 30, "max_attempts": 3})
2. Process Jobs (Worker)
import redis
from buffalomq import Worker
def process_email(job_data):
print(f"Sending email to: {job_data['to']}")
r = redis.Redis(host='localhost', port=6379, db=0)
worker = Worker("email-notifications", r, process_email)
# Start listening for jobs
worker.run()
3. Launch Web Dashboard
buffalomq dashboard --redis redis://localhost:6379/0
Automatically opens http://127.0.0.1:8000 in your browser to monitor queues, inspect payloads, pause workers, and re-drive failed jobs.
Metadata
Release files for buffalomq 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| buffalomq-0.1.3.tar.gz | 87.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| buffalomq-0.1.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 176.6 kB
Release files / buffalomq-0.1.3.tar.gz
| Download URL | buffalomq-0.1.3.tar.gz |
|---|---|
| Size | 87.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
27fdc6f10fc8cb963de088f592ed93a48114c113a0dfef9c3c22c150e3b10bb8
|
|
BLAKE2b-256 checksum How to use checksums |
e3f3923911d8b13ca8161c2b871b5cf1bb7746525b84f390b1f0a642b0d49eac
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / buffalomq-0.1.3-py3-none-any.whl
| Download URL | buffalomq-0.1.3-py3-none-any.whl |
|---|---|
| Size | 89.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9db549704b34afd9a811dd24f750f7cd8122e0292d00418e3792443836501403
|
|
BLAKE2b-256 checksum How to use checksums |
744716128e51d31cb3ce67fec9a1d9c91ddbba6dde02aff5ea2d57307dccb3b6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|