我在为一家为客户提供客户支持的公司工作。我正在尝试设计一个系统,可以在发生某些事件时自动向客户端发送电子邮件。该系统将包括后端部分和Web界面部分。后端将处理与Web界面的通信(这将仅用于内部用于更改电子邮件模板),最重要的是它将检查一些数据库表,并根据这些结果将发送电子邮件......很多。
现在,我想知道如何设计它,以便它可以扩展并提供必要的性能,因为它可能每小时处理几千封电子邮件(这应该是偷看)。我最感兴趣的是如何考虑这种架构,以便在将来可以根据需要轻松扩展。
Python将在Postgres的后端使用,可能是Python Web框架和前端GWT之间的任何内容(这似乎是最简单的任务)。
答案 0 :(得分:5)
这是使用现成软件的真正好选择。有许多开源邮件列表管理器包;他们已经知道如何进行群发邮件了。这些邮件是否每次都会发送给相同的人群并不完全清楚;如果是这样,请获取任何一个常规邮件列表程序。
如果没有,简单的答案是
$ mail address -s subject < file
每封邮件一次。
顺便说一句,在网上调查你上游的人的政策。一些互联网服务提供商将大量邮件视为可能的垃圾邮件,并可能通过切断或计量您的互联网访问来为您带来惊喜。
答案 1 :(得分:3)
只要您的外发邮件服务器愿意及时接受,每小时几千封电子邮件就不那么多了。
我会使用本地mta发送它们,例如postfix或exim(如果需要,它会通过你的传出中继发送它们)。然后该服务负责邮件队列,重试,退回等。如果您正在寻找更多“邮件列表”功能,请尝试将mailman添加到组合中。它是用python编写的,你可能已经看过了,因为它运行了大量的互联网邮件列表。
答案 2 :(得分:2)
这听起来对你来说,你正在尝试优化批量处理,其中热量在网络界面上发生,但在后端。这对于排队架构来说也是一项工作。
例如,如果您真的需要大规模的话,Amazon会提供排队系统。因此,您可以添加多台计算机,以便将这些消息作为电子邮件发送。因此,您允许一台计算机一次只从队列中获取100条消息。
电子邮件系统的模式应该是不合理的,所以如果你不喜欢队列的话,看看其他异步的架构。
答案 3 :(得分:2)
答案 4 :(得分:0)
您可能想尝试使用Twisted Mail在纯Python中实现自己的后端。