电子邮件解析与处理architechtu

2024-06-16 10:56:20 发布

您现在位置:Python中文网/ 问答频道 /正文

好吧,我正在处理每封邮件。假设我正在为一个系统做人工智能,他会自动回复他收到的电子邮件,但我仍然不知道从哪里开始。在

这就是我的想法

架构1enter image description here

问题:

  1. 假设我们有1000封电子邮件/秒,那么邮件服务器、exim或sendmail、davecot等是如何工作的?

  2. 可以吗解析并保存到mysql.py通过管道在一秒钟内处理1000封电子邮件?那又如何呢?顺便说一句,它目前运作良好,但我需要知道这一点。

  3. 我对工人的逻辑正确吗?还是排队系统?我们怎么能在这个问题上解决这个问题呢?

架构2

enter image description here

问题?在

  1. 如所写
  2. pop/stmp服务器如何每秒接收1000封电子邮件?在
  3. 我们可以通过email和pop获取吗?因为我们只是在处理pop3是正确的方式来选择性能吗?在php上有一个imap_open,im当前正在使用

插件

  1. 有没有一个好的链接或博客文章可以解决和我一样的问题?在
  2. 请给我的项目,应用程序或第三方解决我的问题的链接?在
  3. 如果有什么想法,请写下来。在

谢谢你的帮助,亚当·拉马丹

编辑我当前的架构

enter image description here


Tags: py服务器管道链接电子邮件架构系统mysql
1条回答
网友
1楼 · 发布于 2024-06-16 10:56:20

就像很多“大局”架构问题一样,最好的解决方案其实就是其中之一……这取决于。你能控制部署环境吗?也就是说,你可以使用任何你想要的电子邮件服务器吗,或者你被限制使用一个已经安装并托管的服务器?你能在与SMTP服务相同的机器上运行代码吗?这些问题,以及其他许多问题,都应该考虑提出一个(近乎)最优的体系结构。在

鉴于此,我将做出一些假设,并提供一些我认为值得探讨的想法。。。在

您应该研究一个高性能的消息传递系统。具体来说,看看RabbitMQ。RabbitMQ是可靠和高效的,基于异步传入事件的工作负载分配是他们在(在我看来,非常好的)教程中专门讨论的一种模式。在

对于这样的消息服务器,您有一个进程来接收传入的电子邮件。最好这是作为SMTP进程的一部分来完成的,或者至少是非常接近它的——尤其是对于您提到的工作负载。如果您没有其他选择,那么您关于使用cron通过POP或IMAP收集消息的想法现在就必须起作用了。在

然后,电子邮件收集过程将消息推送到RabbitMQ队列中。(也许不是字面上的电子邮件本身,虽然这是可能的,但我想更像是指电子邮件的有效存储位置)。然后运行订阅到命名消息队列的多个工作进程。然后RabbitMQ(或您决定的任何消息传递服务)将以循环方式将这些消息分发给各个订阅者。如果已经加载,工作进程可以NACK消息,或者将自己的控制流消息发送回服务。对于非常高的工作负载(同样,正如您所建议的那样),我强烈建议使用某种管理过程来监视分布式系统的整体运行状况。经理将收集运行时统计数据(对于整个系统的未来增长规划、优化和重构非常有用),并且能够启动和关闭新的工作进程。在达到非常高的工作负载之前,假设您的工作进程是稳定的,并且可以在没有内存碎片的情况下生存很长一段时间,那么仅仅使用消息服务器来分发工作就足够了。在

值得一提的是,我在编写电子邮件处理器方面有一些经验(特别是xmail-如果你刚刚开始你的项目,并且对它的早期阶段有很大的控制权,我建议你使用它)。另外,我目前正在使用RabbitMQ为一个主要的科学计算网格构建一个多代理结果缓存系统。在

总之…祝你的项目好运!在

相关问题 更多 >