在网络应用程序中有一个要求我正在建立用户向他的朋友发送加入邀请的可能性。这些邀请通过Invitation
模型存储在数据库中。用户可以一次发送多个邀请。
您认为哪种更合适:在后端视图中一次发送所有电子邮件,或者在邀请post_save
中一次发送一封电子邮件?
一次发送一封电子邮件会有很大的性能开销吗?
答案 0 :(得分:6)
如果这是实时应用程序并且用户体验很重要,那么我建议您避免在post_save处理程序中,甚至在视图中发送与电子邮件相关的任何内容。
原因是:SMTP可以关闭,网络连接可以关闭,网络可以启动,但速度可以是蜗牛等。在每种情况下,您的程序中断,或用户等待等待等待..这对商业不利。
解决方案是编写/购买/找到能够轻松处理所有此类情况的单独电子邮件调度程序,在出现问题时提醒管理员,即时切换SMTP门,另外还可以追踪反弹等。
然后,在post_save处理程序中,只添加如下内容:
email_dispatcher.add_to_queue(my_email)
关于现成的解决方案 - 快速扫描code.google com导致http://code.google.com/p/django-mailer/,但我没有使用它,因此无法提出建议。