Из документации :
Задание cron можно настроить для работы одним из двух способов: с помощью управления
команда или запрос HTTP. Оба метода запускают почтовую очередь, которая
захватывает электронные письма и отправляет их. Чтобы уменьшить нагрузку, он только пытается отправить
30 электронных писем одновременно. Этот номер можно изменить с помощью
MAILQUEUE_LIMIT в настройках
Идея состоит в том, что сообщения помещаются в очередь для отправки, и вы должны вручную вызывать работников для отправки сообщений. Предпочтительный метод - сделать это, выполнив команду управления send_queued_messages
:
python manage.py send_queued_messages
Из вашего комментария:
Согласно этой строке в документации Вместо использования задания cron
работник задачи сельдерея попытается отправить электронное письмо, когда оно будет сохранено.
cron job уберет все потерянные письма. Мне не нужно запускать
команда управления при MAILQUEUE_CELERY = True.
По умолчанию приложению не нужен сельдерей для работы. Он работает синхронно (в то же время) - так работает почтовый функционал django по умолчанию.
Как только приложение достигает кода для отправки почты, оно будет пытаться отправить почту и сделать паузу, пока не получит ответ, а затем продолжить с остальной частью запроса.
Другой вариант - отложить отправку электронного письма и вместо того, чтобы использовать тот же процесс, что и в Интернете, одновременно использовать вторичный процесс (рабочий). Это то, что происходит, когда вы устанавливаете MAILQUEUE_CELERY = True
.
Если вы установили MAILQUEUE_QUEUE_UP = True
, как вы сделали, теперь сообщения принимаются, но ставятся в очередь, и вы должны использовать команду управления или cron для отправки сообщений.
Итак, если вы хотите, чтобы сообщения отправлялись немедленно, установите MAILQUEUE_QUEUE_UP
на False
.
Если вы хотите отправлять сообщения пакетами с интервалами, установите MAILQUEUE_QUEUE_UP
на True
, а затем настройте задание cron для запуска команды управления.