#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. Я думаю, что сельдерей является наиболее полезным, однако он немного сложный.