2009-04-24 5 views
3

私は、クライアントにカスタマーサポートを提供する会社のために働いています。私はいくつかのイベントが発生したときにクライアントに電子メールを自動的に送信するシステムを設計しようとしています。システムは、バックエンド部分とWebインタフェース部分で構成されます。バックエンドはWebインターフェイス(電子メールテンプレートを変更するための内部使用のみ)との通信を処理し、最も重要なのはデータベーステーブルをチェックし、その結果に基づいて電子メールを送信します。電子メールシステムの設計方法は?

これはスケーラビリティを実現し、必要なパフォーマンスを提供できるように、これをどのように設計できるのだろうかと私は思っています。これはおそらく数時間に数千の電子メールを処理する必要があります。私は、この種のアーキテクチャを将来必要に応じて容易に拡張できるようにするために、どのように考えなければならないかということにほとんど関心があります。

PythonはPostgresのバックエンドで使用されます。おそらく、PythonのWebフレームワークとフロントエンドのGWTの間で最初にくるもの(これは最も単純な作業のようです)。

答えて

2

ウェブインターフェイスではなくバックエンドで熱が発生するバッチ処理用に最適化しようとしています。これはキューイングアーキテクチャの仕事にも聞こえます。

Amazonは、大規模なスケールが本当に必要な場合など、キューイングシステムを提供します。したがって、あなたの側に複数のマシンを追加して、メッセージをeMailとして配信することができます。したがって、1台のマシンが一度にキューから100メッセージしか取らないようにすることができます。

電子メールシステムのパターンは、擬似的でなければならないので、キューがいらない場合は、他の非同期アーキテクチャを参照してください。

5

これは、シェルフソフトウェアの一部を使用するための本当の良い候補です。周囲にはいくつものオープンソースメーリングリストマネージャパッケージがあります。彼らはすでに大量の郵送を行う方法を知っています。これらのメーリングリストが毎回同じ人のセットに行くかどうかは完全にはっきりしていません。そうであれば、通常のメーリングリストプログラムのいずれかを入手してください。

ない場合は、簡単な答えは

$ mail address -s subject < file 

メールに一回です。

ところで、ネット上のあなたの上流にいる人の方針を調べてください。 ISPの中には、多くのメールをスパムとみなすものがあり、インターネットアクセスを遮断したり測定したりすることであなたを驚かせることがあります。

+0

+1の棚のヒントとISPの驚き! –

3

あなたの送信メールサーバがタイムリーにそれらを受け入れる限り、時間当たり数千の電子メールはそれほど多くはありません。

私はpostfixやeximのようなローカルmtaを使用してそれらを送信します(必要に応じて送信リレーを介して送信します)。そのサービスはメール待ち行列、再試行、バウンスなどを担当します。もっと "メーリングリスト"機能を探しているなら、mixmanにmailmanを追加してみてください。これはPythonで書かれています。あなたはインターネットのメーリングリストがたくさん走っているので、おそらくそれを見てきました。

+0

+1この場合、ローカルMTAを使用する必要があります。 – codeape

+0

ローカルMTAを使用して、キューの長さと配信ステータスを監視します。 – MarkR

0

純粋なPythonで独自のバックエンドを実装するためにTwisted Mailを試してみたいかもしれません。

2

あなたが説明したことを行うことができるはずの、Pythonで書かれた状態マシンベースの電子メールサーバであるLamsonをチェックしたいかもしれません。それはZed Shawによって書かれており、彼は最近それについてブログしたhereです。

関連する問題