Celery's task scheduler — runs periodic tasks on cron-like or interval schedules, dispatching them to Celery workers for execution.
Celery Beat is a separate process (not a worker) that reads a schedule (defined in code or stored in a database) and pushes tasks into the broker queue at the scheduled time. Workers pick up the tasks and execute them. Beat supports crontab expressions, fixed intervals, and dynamic schedules via celery-django-beat. Critical pattern: run exactly one Beat instance to avoid duplicate task dispatching.
Scheduling nightly aggregation tasks: 'every day at 03:00 UTC, generate yesterday's revenue report and email the finance team.'
Celery Beat replaces fragile system crontabs with code-defined schedules — version-controlled, observable, testable, and integrated with the application's task system.
Need help implementing this in your business?
Get Started