Start here. This is the direct spoken answer to practice first.
Overview
Separates single scheduler ownership from task-level overlap and idempotency controls.
Celery beat publishes tasks on a schedule; it does not execute them or guarantee that an earlier run has finished. I run one logical scheduler for a schedule so duplicate beat instances do not publish the same due work. The task itself still handles retries and duplicate delivery safely. If two scheduled runs must not overlap, I enforce that explicitly rather than assuming the interval prevents it.