Skip to content

celery-beat

Package: z4j-celerybeat - Celery 5+, django-celery-beat 2.5+ (for writable backend).

Terminal window
pip install z4j-celerybeat
BackendReadableWritable
celery.beat.PersistentScheduler (filesystem)✗ (read-only)
django_celery_beat.schedulers.DatabaseScheduler
Custom✓ if it exposes the standard Scheduler APIdepends

When paired with django-celery-beat:

  • Create: inserts into django_celery_beat_periodictask + appropriate *Schedule table.
  • Update: modifies the row.
  • Pause/Resume: flips enabled.
  • Delete: removes the row.
  • IntervalSchedule (every N seconds/minutes/…)
  • CrontabSchedule (minute, hour, day, month, day-of-week)
  • SolarSchedule (sunrise/sunset) - read-only in v1.0
  • ClockedSchedule (one-shot) - read-only in v1.0

If you’re using the default PersistentScheduler, the dashboard shows schedules as read-only. Switch to DatabaseScheduler to edit from the UI.

Running multiple beat schedulers against the same backend causes duplicate task firings. z4j detects this via the *-beat record and shows a warning in the schedules page. Run exactly one beat.

  • The agent writes to the DB directly (bypassing PeriodicTask.save_related-style cascades). Django signals still fire. No Django-specific validators run.
  • PeriodicTasks.update_changed() is called after each CRUD op so beat picks up changes within one tick.