Metadata-Version: 2.4
Name: celery-redbeat
Version: 2.3.2
Summary: A Celery Beat Scheduler using Redis for persistent storage
Home-page: https://github.com/sibson/redbeat
Author: Marc Sibson
License: Apache License, Version 2.0
Keywords: python,celery,beat,redis,scheduler
Classifier: Development Status :: 5 - Production/Stable
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Topic :: System :: Distributed Computing
Classifier: Topic :: Software Development :: Object Brokering
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Operating System :: OS Independent
Requires-Python: >=3.8
License-File: LICENSE
Requires-Dist: redis>=3.2
Requires-Dist: celery>=5.0
Requires-Dist: python-dateutil
Requires-Dist: tenacity
Requires-Dist: backports.zoneinfo>=0.2.1; python_version < "3.9.0"
Dynamic: license-file

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/>`_

Development
--------------
RedBeat is available on `GitHub <https://github.com/sibson/redbeat>`_

Once you have the source you can run the tests with the following commands::

    pip install -r requirements-dev.txt
    python -m unittest discover tests

You can also quickly fire up a sample Beat instance with::

    celery beat --config exampleconf
