2012-05-24 6 views
1

Я не знаю, как вещи совмещаются ..Celerybeat - Периодические задачи с Django

У меня есть приложение с активными кампаниями, победителей и т.д. Анонс, и отправлять напоминания для кампаний. Кампания создана с помощью django, и в модели кампании у меня есть поле, в котором говорится, что каждыйнадцать дней или недели или часа уведомляет победителей. Поэтому для этой кампании победители должны быть объявлены каждую пятницу. Это за кампанию, может быть несколько кампаний с разными победителями и настройками напоминания.

Im не уверен, с чего начать задачу celerybeat? Должно ли быть сохранение модели? Но что, если вы что-то измените и снова сохраните модель? Не создаст ли это еще одну задачу, а затем отправит 2 или более напоминаний и т. Д.?

+0

Лично я обнаружил, что Сельдерей ужасно сложно установить и ненадежно. Если вам не нужно выполнять задачи в распределенной архитектуре, я бы очень рекомендовал просто планировать периодические задания через cron. – Cerin

ответ

2

Celerybeat - демон, он должен run in the background постоянно (с чем-то вроде супервизора). Учитывая тот факт, что ваша самая короткая задержка напоминания составляет час, она должна выполнять задание ежечасно.

Эта задача должна проверять все кампании и решать в соответствии с данными из базы данных, которые напоминания должны отправлять. Чтобы упростить задачу, я предлагаю вам рассчитать и сохранить в следующий раз, когда напоминание должно быть отправлено при его отправке. Таким образом, в следующий раз, перечисление напоминаний для отправки будет таким же простым, как перечисление всех просроченных напоминаний.