Pythoner
Фотография
✈️Celery Beat — это встроенный планировщик задач в экосистеме Celery, который позволяет запускать фоновые задачи по расписанию. Это идеальный инструмент для выполнения регулярных операций: очистки кэша, отправки отчетов, проверки данных и других автоматизированных действий.
➡️Основные возможности Celery Beat:
- Регулярное выполнение задач: Позволяет настроить запуск задач каждые несколько секунд, минут, часов или в определённые дни
- Интеграция с Django: В связке с django-celery-beat можно управлять расписанием через админ-панель или модели базы данных
- Гибкость расписания: Поддержка как фиксированных интервалов, так и расписаний по крону (cron-like schedules)
- Централизованное управление: Все задачи централизованно управляются из одного места — брокера сообщений (Redis, RabbitMQ и т.п.)
➡️Пример использования в Django проекте:
1. Установите зависимости:
pip install celery django-celery-beat
2. Добавьте в settings.py:
INSTALLED_APPS += ['django_celery_beat']
CELERY_BEAT_SCHEDULER = 'django_celery_beat.schedulers:DatabaseScheduler'
3. Создайте периодическую задачу:
from celery import shared_task
@shared_task
def daily_cleanup():
print("Очистка старых данных...")
4. Зарегистрируйте задачу в базе данных:
Это можно сделать через админ-панель Django или программно, используя ORM модели PeriodicTask, IntervalSchedule и CrontabSchedule из django_celery_beat.
5. Запустите планировщик Celery Beat:
celery -A your_project_name beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler
6. Не забудьте запустить worker , чтобы задачи выполнялись:
celery -A your_project_name worker -l info
⛓Полезные ссылки:
Документация
GitHub
💡Заключение:
Celery Beat — мощный и гибкий инструмент для организации периодических задач в Python-приложениях. Особенно удобен в связке с Django и Redis. Легко масштабируется и поддерживает динамическое управление расписанием прямо из кода или через административный интерфейс.
🐍 Pythoner
32 · 2.2K ·