Вопрос проверяет понимание различий между планировщиками задач Cron и Celery и умение выбирать подходящий инструмент в зависимости от требований проекта.
Cron и Celery решают задачу выполнения отложенных или периодических задач, но имеют принципиально разную архитектуру и область применения. Cron — это классический планировщик операционной системы Unix, который запускает команды по расписанию. Celery — это распределенная очередь задач, работающая поверх брокера сообщений (например, Redis или RabbitMQ).
# Очистка временных файлов каждый день в 3:00
0 3 * * * /usr/bin/find /tmp -type f -mtime +7 -delete
# Резервное копирование базы данных каждое воскресенье в 2:00
0 2 * * 0 /usr/local/bin/backup_db.shfrom celery import Celery
app = Celery('tasks', broker='redis://localhost:6379/0')
@app.task
def send_welcome_email(user_id):
# Отправка email может занять время
user = get_user(user_id)
send_email(user.email, 'Welcome!')
# Запуск задачи
send_welcome_email.delay(123)Cron идеален для простых, предсказуемых задач на одном сервере, где не требуется сложная обработка ошибок. Celery стоит применять, когда нужна распределенная обработка, масштабирование, мониторинг и гибкость в управлении задачами.