Отправить приглашения по электронной почте на post_save или все сразу в представлении Django? - PullRequest
2 голосов
/ 05 февраля 2010

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

Что, по вашему мнению, более уместно: отправлять все электронные письма одновременно в виде на сервер или по одному в приглашении post_save?

Существенно ли снижается производительность при отправке одного письма за раз?

1 Ответ

6 голосов
/ 05 февраля 2010

Если это живое приложение и важно взаимодействие с пользователем, тогда я советую вам не отправлять что-либо, связанное с электронной почтой, в обработчики post_save или даже в представлениях.

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

Решение состоит в том, чтобы написать / купить / найти отдельный диспетчер электронной почты, который способен аккуратно обрабатывать все такие ситуации, оповещать администратора в случае возникновения проблем, переключать SMTP-шлюзы на лету, дополнительно он может отслеживать отскок и т. Д.

Затем в вашем обработчике post_save вы добавляете только что-то вроде этого:

   email_dispatcher.add_to_queue(my_email)

Что касается готовых решений - быстрое сканирование code.google com привело к http://code.google.com/p/django-mailer/, но я не использовал его, поэтому не могу дать рекомендации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...