Планирование задач в Django

#django #django-celery #django-cron

#django #django-сельдерей #django-cron

Вопрос:

Я новичок в Django. Я создал программу, которая позволяет учителям назначать домашнее задание учащимся. Срок выполнения домашнего задания разный для каждого учащегося.

Я хочу сделать так, чтобы за 1 час до выполнения домашнего задания для этого конкретного ученика им отправлялось электронное письмо.

Итак, например:

  • Студент 1, у которого HW должен быть в 15:00, получит электронное письмо в 14:00
  • Студент 2, у которого HW должен быть в 1 час ночи, получит электронное письмо в 12 часов

Как я могу этого добиться? Спасибо!!!

Ответ №1:

напишите команду управления Django, которая определяет учащихся, которым необходимо отправить электронное письмо с напоминанием, а затем отправляет электронные письма. используйте cron job (crontab в Linux), чтобы периодически (каждый час или каждую минуту) запускать эту команду управления Django

Комментарии:

1. Я понимаю. Большое спасибо за ваш ответ! Почему вы рекомендуете это вместо Celery?

2. Сельдерей превосходен, я использую его сам, но он требует сложного обучения для настройки задач, также вам нужно будет использовать message broker для отправки задач в celery и дополнительную утилиту для запуска celery в режиме демона.

3. Понятно, спасибо за совет. Кстати, я запускаю это на AWS Elastic Beanstalk. Будет ли команда управления Django работать с этим?

4. Я раньше не использовал AWS Elastic Beanstalk, но я предполагаю, что ответ должен быть утвердительным, потому что задания cron являются частью базовой функциональности, и я буду удивлен, если они не поддерживаются.

5. Хорошо, пока ты здесь. Не могли бы вы связать несколько хороших руководств для этого? Кажется, я не могу найти слишком много таких, которые имеют мой вариант использования. Или, может быть, даже написать ответ с кодом. Спасибо!!

Ответ №2:

Вы могли бы использовать что-то вроде Celery для определения задачи или списка задач, которые необходимо выполнить.

Также вы могли бы использовать модуль django-background-tasks для планирования задачи.

Комментарии:

1. Большое спасибо за ваш ответ! Я сталкивался с Celery , django-background-tasks , django-cron django-crontab и многими другими. Знаете ли вы, какой из них лучше всего подходит для этой задачи? До сих пор я видел Celery наиболее рекомендуемым. Спасибо!!

2. Я думаю, что сельдерей является наиболее полезным, однако он немного сложный.