私はさまざまな言語を評価して、小型の高スループットアプリケーションサーバーを構築しようとしています。要求を取得したり、キャッシュアプリケーション(memcached、redis)を実行している別のサーバーからデータを読み取り、5〜10行のXMLまたはJSONを返すような小さな作業が必要です。非常に高いスループット〜毎秒1000本以上の生産量。私はこれをNginxに持っています - PHPとmemcachedはブロックするいくつかのネットワークIOがあるので、すべての必要なデータを返すために5 + msかかります。Python ThreadingMixinとBaseHTTPServer
私はPythonのBaseHTTPServerクラスを見ていました。私はパイソン達人ではありませんが、シーンの背後でどのように動作するかを知る必要があります。あなたはこのページを読んでいる場合 -
http://docs.python.org/library/socketserver.html
それは「非同期ハンドラを構築ThreadingMixInとはForkingMixInクラスを使用するには。」と言います
本当に非同期ですか、またはクライアントごとに1つのスレッドを開始しますか?それがクライアントモデルごとに1つのスレッド上にある場合、これらのOSレベルのスレッドですか?私はクライアントモデルごとに1つのスレッドに固執する場合は、PythonのGCは、私はそれが高いRAM、8コアアマゾンのインスタンスを与える場合、十分に速くものをクリアします。
いくつかの研究をしました。あなたがこのような状況にあった場合、どのテクノロジーを使用しますか?そのNginx PHPを何かに移植する必要があります。 HTTPサーバーが組み込まれている永続的なアプリケーション。 –
スタンドアロンのPyアプリケーションまたはNginxのTornado?このベンチマークは、Nginx + Tornadoが1秒あたり8000+を行ったことを示しています。 http://en.wikipedia.org/wiki/Tornado_%28web_server%29 –
@Don質問:ThreadingMixinは、AFAIKというレベルのスレッドであるthreading.threadを使用しています。その場合は、GILを扱っていません。これは糸通しミキシンをOPのための理想的な選択にするでしょう。 –