RedBeat is a Celery Beat Scheduler that stores the scheduled tasks and runtime metadata in Redis.
Python
1,054
656 commits
updated Oct 9, 2026
RedBeat
=======
.. image:: https://img.shields.io/pypi/pyversions/celery-redbeat.svg
:target: https://pypi.python.org/pypi/celery-redbeat
:alt: Python Versions
.. image:: https://img.shields.io/pypi/v/celery-redbeat.svg
:target: https://pypi.python.org/pypi/celery-redbeat
:alt: PyPI Package
.. image:: https://github.com/sibson/redbeat/workflows/RedBeat%20CI/badge.svg
:target: https://github.com/sibson/redbeat/actions
:alt: Actions Status
.. image:: https://readthedocs.org/projects/redbeat/badge/?version=latest&style=flat
:target: https://redbeat.readthedocs.io/en/latest/
:alt: ReadTheDocs
.. image:: https://img.shields.io/badge/code%20style-black-000000.svg
:target: https://github.com/psf/black
:alt: Code style: black
`RedBeat <https://github.com/sibson/redbeat>`_ is a
`Celery Beat Scheduler <http://celery.readthedocs.org/en/latest/userguide/periodic-tasks.html>`_
that stores the scheduled tasks and runtime metadata in `Redis <http://redis.io/>`_.
Why RedBeat?
-------------
#. Dynamic live task creation and modification, without lengthy downtime
#. Externally manage tasks from any language with Redis bindings
#. Shared data store; Beat isn't tied to a single drive or machine
#. Fast startup even with a large task count
#. Prevent accidentally running multiple Beat servers
For more background on the genesis of RedBeat see this `blog post <https://blog.heroku.com/redbeat-celery-beat-scheduler>`_
Getting Started
---------------
Install with pip:
.. code-block:: console
pip install celery-redbeat
Configure RedBeat settings in your Celery configuration file:
.. code-block:: python
redbeat_redis_url = "redis://localhost:6379/1"
Then specify the scheduler when running Celery Beat:
.. code-block:: console
celery beat -A <celery_app_file_path>.<celery_app_instance_name> -S redbeat.RedBeatScheduler
If using the embedded beat in a worker process (like in development), specify the scheduler like so:
.. code-block:: console
celery worker --beat --scheduler redbeat.RedBeatScheduler ...
RedBeat uses a distributed lock to prevent multiple instances running.
To disable this feature, set:
.. code-block:: python
redbeat_lock_key = None
More details available on `Read the Docs <https://redbeat.readthedocs.io/en/latest/>`_
Server compatibility
--------------------
RedBeat works with both `Redis <https://redis.io/>`_ and
`Valkey <https://valkey.io/>`_ servers -- point ``redbeat_redis_url`` at
either. We intend to maintain support for both for as long as neither
introduces a major behaviour change RedBeat depends on, or an
incompatibility upstream.
RedBeat uses the `redis-py <https://github.com/redis/redis-py>`_ client to
talk to either server; it is the only supported client library.
Development
--------------
RedBeat is available on `GitHub <https://github.com/sibson/redbeat>`_
Once you have the source you can run the tests with make (recommended)::
make setup
make test
Or using uv directly::
uv sync
uv run python -m unittest discover tests
Optional: if you use mise to manage Python, it will read `.mise.toml` and install the pinned Python version. After that, still use make for tasks::
mise install
make setup && make test
You can also quickly fire up a sample Beat instance with::
celery beat --config exampleconf
Not written in Markdown, so it's shown here as plain text — view it formatted on GitHub.
303 followers · starred Mar 2024
1,041 followers · starred Oct 2019
239 followers · starred Dec 2021
32 followers · starred Nov 2018
RedBeat is a Celery Beat Scheduler that stores the scheduled tasks and runtime metadata in Redis.
Python
1,054
656 commits
updated Oct 9, 2026
RedBeat
=======
.. image:: https://img.shields.io/pypi/pyversions/celery-redbeat.svg
:target: https://pypi.python.org/pypi/celery-redbeat
:alt: Python Versions
.. image:: https://img.shields.io/pypi/v/celery-redbeat.svg
:target: https://pypi.python.org/pypi/celery-redbeat
:alt: PyPI Package
.. image:: https://github.com/sibson/redbeat/workflows/RedBeat%20CI/badge.svg
:target: https://github.com/sibson/redbeat/actions
:alt: Actions Status
.. image:: https://readthedocs.org/projects/redbeat/badge/?version=latest&style=flat
:target: https://redbeat.readthedocs.io/en/latest/
:alt: ReadTheDocs
.. image:: https://img.shields.io/badge/code%20style-black-000000.svg
:target: https://github.com/psf/black
:alt: Code style: black
`RedBeat <https://github.com/sibson/redbeat>`_ is a
`Celery Beat Scheduler <http://celery.readthedocs.org/en/latest/userguide/periodic-tasks.html>`_
that stores the scheduled tasks and runtime metadata in `Redis <http://redis.io/>`_.
Why RedBeat?
-------------
#. Dynamic live task creation and modification, without lengthy downtime
#. Externally manage tasks from any language with Redis bindings
#. Shared data store; Beat isn't tied to a single drive or machine
#. Fast startup even with a large task count
#. Prevent accidentally running multiple Beat servers
For more background on the genesis of RedBeat see this `blog post <https://blog.heroku.com/redbeat-celery-beat-scheduler>`_
Getting Started
---------------
Install with pip:
.. code-block:: console
pip install celery-redbeat
Configure RedBeat settings in your Celery configuration file:
.. code-block:: python
redbeat_redis_url = "redis://localhost:6379/1"
Then specify the scheduler when running Celery Beat:
.. code-block:: console
celery beat -A <celery_app_file_path>.<celery_app_instance_name> -S redbeat.RedBeatScheduler
If using the embedded beat in a worker process (like in development), specify the scheduler like so:
.. code-block:: console
celery worker --beat --scheduler redbeat.RedBeatScheduler ...
RedBeat uses a distributed lock to prevent multiple instances running.
To disable this feature, set:
.. code-block:: python
redbeat_lock_key = None
More details available on `Read the Docs <https://redbeat.readthedocs.io/en/latest/>`_
Server compatibility
--------------------
RedBeat works with both `Redis <https://redis.io/>`_ and
`Valkey <https://valkey.io/>`_ servers -- point ``redbeat_redis_url`` at
either. We intend to maintain support for both for as long as neither
introduces a major behaviour change RedBeat depends on, or an
incompatibility upstream.
RedBeat uses the `redis-py <https://github.com/redis/redis-py>`_ client to
talk to either server; it is the only supported client library.
Development
--------------
RedBeat is available on `GitHub <https://github.com/sibson/redbeat>`_
Once you have the source you can run the tests with make (recommended)::
make setup
make test
Or using uv directly::
uv sync
uv run python -m unittest discover tests
Optional: if you use mise to manage Python, it will read `.mise.toml` and install the pinned Python version. After that, still use make for tasks::
mise install
make setup && make test
You can also quickly fire up a sample Beat instance with::
celery beat --config exampleconf
Not written in Markdown, so it's shown here as plain text — view it formatted on GitHub.
303 followers · starred Mar 2024
1,041 followers · starred Oct 2019
239 followers · starred Dec 2021
32 followers · starred Nov 2018