Asosiy kontentga o'tish
← Blog
Maqola

Django'da rejalashtirilgan kontent: Celery Beat amaliyotda

Postlarni belgilangan vaqtda avtomatik e'lon qilish tizimini Celery Beat bilan qanday qurdim — arxitektura, kod va tuzoqlar.

Django'da rejalashtirilgan kontent: Celery Beat amaliyotda

Ko'p CMS'larda "keyinroq e'lon qilish" funksiyasi bor. Buni Django'da noldan qurish uchun uchta komponent kerak:

1. Status maydoni

status = models.CharField(choices=[draft, scheduled, published, archived])
publish_at = models.DateTimeField(null=True)

2. Beat vazifasi

Har 60 soniyada status=scheduled AND publish_at <= now shartli postlarni topib, published qilamiz.

3. Idempotentlik

Eng muhim tuzoq: vazifa ikki marta ishga tushsa ham post ikki marta tarqatilmasligi kerak. Buning uchun get_or_create va unique constraint ishlatamiz.

To'liq kod GitHub'da — savollar bo'lsa, murojaat qiling!

  • #Django
  • #Nuxt 3