2017-10-25 5 views
0

私は財務データを取得してMongoDBに書き込む〜30-50ウェブソケット接続を開くサービスを設計しています。毎秒何百ものメッセージが受信される可能性があります。私はAutobahnのPython Twisted Websocketを使っていますが、非同期スレッドを1つ実行するとスケーラブルかどうかは分かりませんでした。私の本質は、単一スレッドのTwistedとMongoDBの両方がそのスループットを処理できることですが、その仮説を確認したいと思います。Twisted reactorはどのくらいのスループットをwebsocketで処理できますか?

私は3つの潜在的なオプションを参照:1つのスレッドを使用して

  1. を、すべてのWebSocketエンドポイントに接続し、()を呼び出しreactor.run。
  2. 各websocket接続は独自のthreadに属し、独自のreactor.run()を持っています。すべてのスレッドを生成する1つの主要なUNIXデーモンとして実行します。
  3. 各websocket接続は、独自のスレッドに属し、UNIXデーモンとは異なるスクリプトで実行されます。

最も堅牢なオプションは何ですか?どうもありがとう!

+0

オプション3は、複数のCPUコアを利用できる唯一のオプションです(問題がある場合)。 – freakish

答えて

0

あなたの問題を説明する限り、アプリケーションはIOバウンドでCPUに束縛されていません。非同期のソリューションを使用する場合は、スレッドを回避するようにしてください。 Twistedはスレッドit doesをサポートしていませんが、スレッドは非同期の方法でプログラミングしているときにオーバーヘッドに過ぎません。 TwistedとAutobahnはCPUを使い始める前に多くのIOを処理できます。あなたのアプリケーションコードが高いCPUでない限り、あなたはうまくいくでしょう。

関連する問題