0

我正在尝试学习如何为使用 python 的大型组织构建他们的代码,以便我可以将他们的一些理论应用到我自己的代码中。

目前,我正在查看 reddit 的代码,并对他们如何实现发送作为应用程序操作的一部分生成的电子邮件感兴趣。请参阅:https ://github.com/reddit/reddit/blob/master/r2/r2/lib/emailer.py (他们的电子邮件库)和 https://github.com/reddit/reddit/blob/master/r2 /r2/models/mail_queue.py

我认为 mail_queue.py 包含某种形式的 SqlAlchemy 表支持的电子邮件队列。是不是这种情况。这是否意味着该表保存在内存中?有人可以让我更清楚一点吗?

来自 Down Under 的欢呼。

PS我可以建议是否有人试图很好地理解如何构建python应用程序,他们和我一样。阅读和理解其他人的代码使我能够构建和编写明显更好的代码.. :) 开源的东西很棒!

4

1 回答 1

0

传统上,电子邮件服务器上的邮件队列一直是某种磁盘存储。这样做的原因是为了最大限度地减少邮件丢失的机会。例如,邮件服务器将收到一条消息,并且在通过同步写入将整个消息成功写入磁盘之前,不会向发送邮件的客户端发送成功的返回码。

是的,reddit 代码通过 SqlAlchemy 使用数据库作为电子邮件数据存储。

至于存储在内存中的表,我不会想象它会这样。通过阅读 SqlAchemy 文档,Table 对象是 SqlAlchemy 只是支持系统的任何数据库中底层表的代理。通常,您不希望该表在内存中,因为您不知道系统将处理多少消息,电子邮件消息有多大,以及在临时邮件发送的情况下需要排队多少消息失败。

于 2012-10-26T10:51:54.820 回答