2012-07-24 54 views
0

我想學習如何使用python構建代碼的大型組織,以便我可以將他們的一些理論應用到我自己的代碼中。reddit如何發送電子郵件?

目前我正在瀏覽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表支持的電子郵件隊列。 是這樣。這是否意味着桌子保存在記憶中?有人能爲我更清楚一點嗎?

從下往上喝酒。

P.S.我是否可以建議是否有人試圖很好地理解如何構建他們和我一樣的python應用程序。閱讀和理解其他人的代碼使我能夠編寫和編寫明顯更好的代碼。:)開源的東西太棒了!

回答

0

傳統上,電子郵件服務器上的郵件隊列是某種磁盤存儲。這是因爲郵件迷路的機會被最小化了。例如,郵件服務器將收到一條消息,並且不會將成功的返回碼發送回發送郵件客戶端,直到通過同步寫入將整個郵件成功寫入磁盤爲止。

是的,reddit代碼通過SqlAlchemy使用數據庫作爲電子郵件數據存儲。

就表格被存儲在內存中,我不會想象它會。從閱讀SqlAchemy文檔,Table對象是SqlAlchemy只是在任何數據庫支持系統的基礎表的代理。一般來說,由於不知道系統將處理多少條消息,電子郵件有多大以及在臨時郵件發送的情況下需要排隊多少條消息,因此您不需要內存中的表失敗。