Skip to main content
BullMQ is now available as a Python package, providing a powerful job queue system backed by Redis. The Python implementation is fully interoperable with the Node.js, Elixir, and PHP versions.

Overview

BullMQ for Python is a close port of the Node.js library, using the same Lua scripts for Redis operations. This ensures compatibility across all language implementations.

Key Features

  • Add jobs to queues - Regular and delayed jobs with deduplication support
  • Workers - Process jobs concurrently using asyncio
  • Job progress - Track job progress in real-time
  • Job backoff - Automatic retry with configurable backoff strategies
  • Getters - Query job states and queue information
  • Interoperability - Jobs can be added in Python and processed by workers in Node.js, Elixir, or PHP

Requirements

  • Python 3.10 or higher
  • Redis 5.0 or higher (6.2+ recommended)

Architecture

BullMQ uses asyncio for concurrency, enabling efficient processing of jobs without blocking. All queue operations are asynchronous and should be awaited.

Use Cases

Python BullMQ is ideal for:
  • Background job processing (email sending, image processing, etc.)
  • Distributed task execution across multiple workers
  • Scheduled and delayed job execution
  • Building hybrid systems where jobs are produced in Python and consumed in Node.js (or vice versa)

Version

Current version: 2.19.5
The Python package is currently in alpha status. While it’s production-ready for many use cases, the API may evolve based on community feedback.
If Redis responses are in binary format, you should pass the decode_responses=True option when creating your Redis connection. See the redis-py documentation for details.

Next Steps

Installation

Install BullMQ for Python using pip

Usage Guide

Learn how to add jobs and create workers

Changelog

View release history and updates

Main Documentation

Explore the full BullMQ documentation

Build docs developers (and LLMs) love