Статья
Отложенные публикации в Django: Celery Beat на практике
Как я построил систему автоматической публикации постов в заданное время на Celery Beat — архитектура, код и подводные камни.

Во многих CMS есть функция «опубликовать позже». Чтобы построить её в Django с нуля, нужны три компонента:
1. Поле статуса
status = models.CharField(choices=[draft, scheduled, published, archived]) publish_at = models.DateTimeField(null=True)
2. Задача Beat
Каждые 60 секунд находим посты с status=scheduled AND publish_at <= now
и публикуем их.
3. Идемпотентность
Главный подводный камень: даже если задача запустится дважды, пост не
должен разослаться два раза. Для этого — get_or_create и unique
constraint.
Полный код на GitHub — пишите, если есть вопросы!
- #Django
- #Nuxt 3