Skip to content
/ redbeat Public

RedBeat is a Celery Beat Scheduler that stores the scheduled tasks and runtime metadata in Redis.

License

Notifications You must be signed in to change notification settings

sibson/redbeat

Repository files navigation

RedBeat

Python Versions PyPI Package Actions Status ReadTheDocs Code style: black

RedBeat is a Celery Beat Scheduler that stores the scheduled tasks and runtime metadata in Redis.

Why RedBeat?

  1. Dynamic live task creation and modification, without lengthy downtime
  2. Externally manage tasks from any language with Redis bindings
  3. Shared data store; Beat isn't tied to a single drive or machine
  4. Fast startup even with a large task count
  5. Prevent accidentally running multiple Beat servers

For more background on the genesis of RedBeat see this blog post

Getting Started

Install with pip:

pip install celery-redbeat

Configure RedBeat settings in your Celery configuration file:

redbeat_redis_url = "redis://localhost:6379/1"

Then specify the scheduler when running Celery Beat:

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:

celery worker --beat --scheduler redbeat.RedBeatScheduler ...

RedBeat uses a distributed lock to prevent multiple instances running. To disable this feature, set:

redbeat_lock_key = None

More details available on Read the Docs

Development

RedBeat is available on GitHub

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