Планирование электронной почты на определенное время с помощью Django и celery

Это тот случай использования, который я ищу :

  • Пользователь зарегистрируется в моем приложении
  • Это приложение для создания заметок и остатков
  • При создании остатков пользователи будут вводить время, которое мое приложение хочет отправить пользователю по электронной почте в это время
  • Я должен использовать celery для этого. Я прочитал несколько постов и ответов на stack overflow, но не получил правильного ответа на этот вопрос.

Мое приложение написано на Django.

Когда пользователь создает новое напоминание, просто запланируйте задачу отправки email в celery. Обратите внимание, что это простое решение, но оно затруднит пользователю изменение времени уведомления после его создания.

Из этого ответа:

Для выполнения задачи в указанную дату и время вы можете использовать атрибут eta в apply_async при вызове задачи, как указано в docs

.

your_task.apply_async(kwargs={}, eta="your_send_time")

Другим решением может быть задача, выполняемая каждую 1 минуту, которая будет проверять в DB, есть ли письма, которые нужно отправить. Для этого не обязательно использовать Celery. Cron-подобная либа должна справиться с этой задачей. Например, schedule lib или django-cron или Django Commands


Edit: этот парень говорит, что вы не должны использовать dbader/schedule с Django.

Вернуться на верх