2010-02-05 119 views
2

我正在构建关于用户向他的朋友发送加入邀请的可能性的Web应用程序中有一项要求。这些邀请通过Invitation模型存储在数据库中。用户可以一次发送多个邀请。在post_save上发送邀请电子邮件或在django视图中一次发送邀请邮件?

你认为什么更合适:在后台视图中一次发送所有电子邮件或在邀请post_save中发送一次?

在发送一封电子邮件时是否会有相当大的性能开销?

回答

6

如果这是实时应用程序和用户体验很重要,那么我建议您避免在post_save处理程序或甚至视图中发送任何与电子邮件相关的任何内容。

原因是:SMTP可能关闭,网络连接可能关闭,网络可能启动,但速度可能是蜗牛等。在每种情况下,您的程序都会中断,或者用户等待并等待等待。 ..这对商业不利。

解决方案是编写/购买/寻找单独的电子邮件调度程序,它能够轻松处理所有这些情况,在出现故障时提醒管理员,动态切换SMTP门,另外它可以跟踪弹回等。

然后,在你post_save处理程序,只添加这样的事情:

email_dispatcher.add_to_queue(my_email) 

关于现成的解决方案 - code.google COM的快速扫描导致http://code.google.com/p/django-mailer/,但我没有使用它,不能让建议。

+0

django-mailer很棒。请记住,所有的邮件都将进入队列,并且必须有某种类型的进程正在运行,以清除所述队列。这虽然记录。 – istruble 2010-02-05 17:48:17