Лучший способ сделать планирование электронной почты в веб-приложении Python? - PullRequest
0 голосов
/ 23 июля 2011

У меня есть веб-приложение Pyramid, которое должно отправлять электронные письма, такие как письма с подтверждением после регистрации, информационные бюллетени и так далее.Я знаю, как отправлять электронные письма, используя smtplib в python, и я выбрал службу smtp (я думаю, что sendgrid сделает свое дело).
Реальная проблема - планирование и задержка отправки электронных писем - например, когда пользователь регистрируется, электронная почта должна быть отправлена ​​в форме просмотра сообщения.Но я не хочу блокировать запрос, и поэтому хотел бы «запланировать» электронную почту неблокирующим способом.
Кроме реализации этого самостоятельно (возможно, с БД и работником), есть лиСуществующее решение для очереди и планирования электронной почты?

Спасибо!

Ответы [ 3 ]

0 голосов
/ 24 июля 2011

В моем приложении я вставляю электронные письма в таблицу БД, и у меня есть скрипт python, запущенный под cron, который проверяет эту таблицу и отправляет запись обновления электронной почты как отправленную.

0 голосов
/ 18 мая 2012

Вы также можете использовать Redis Lists в качестве очереди для отправки электронных писем. Создайте пару рабочих процессов, которые прослушивают Redis List, и

  • опубликовать работу по электронной почте через RPUSH или LPUSH
  • получить работу у вашего работника через LPOP или RPOP

чтобы ваш рабочий процесс веб-приложения не был затронут или даже не чувствовал накладных расходов на операции отправки электронной почты.

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

0 голосов
/ 23 июля 2011

Существующее решение, на которое вы ссылаетесь, состоит в том, чтобы запустить собственный SMTP-сервер на компьютере, связанный только с localhost, чтобы не допустить подключения к нему других компьютеров. Поскольку вы используете его только вы, отправка сообщения должна быть близка к мгновенной, и сервер будет обрабатывать очереди, повторные попытки и т. Д. Если вы работаете в системе UNIX / Linux, возможно, такой сервер уже установлен .

...