7

スケーラビリティを提供する Python Web サーバーを検討しており、Tornado (Facebook FriendFeed で使用) または Gevent のいずれかを使用することにしました。私はこれにかなり慣れていないので、Tornado と Gevent の候補リストを作成するために、Python Web サーバーのベンチマークに依存しました。さらに、さらに調査した結果、次のことがわかりました。

  • Gevent は独立した Web サーバーではありません。Web サーバーとして libevent または gunicorn を使用する必要があります。
  • libevent には、SSL、ストリーミング、キープアライブ、websocket をサポートしていないなどの落とし穴があります。
  • gevent と gunicorn のパフォーマンスが一緒に使用されたドキュメントを見つけることができるベンチマーク結果はありません。
  • gevent の作成者自身が、実際の展開にはgevent + gunicornを使用することを推奨しています。

私の要件:

  • スケーラビリティの高い非同期 Python Web サーバー。
  • SSL サポートが含まれています。

そのグリーンレットベースのアプローチのために、私は特にgeventに傾倒しています。Tornado と連携して、gunicorn + gevent が適切な選択であり、高度にスケーラブルであることを証明するいくつかの確かな事実が欲しいだけです。または、私の要件を満たす他の python Web サーバーはありますか?

私を正しい方向に向けてください。

4

1 に答える 1

13

この記事を書いている時点で、Gunicorn はベータ版(バージョン 0.16) であり、Gevent は1.0のリリース候補( Google グループでの発表) を持っているため、API の変更を期待するのは妥当かもしれません (Gevent の場合はそうではありません)。アプリケーションを破壊する可能性のある変更についてメーリング リスト (ここではgunicorngevent ) を追跡しているので、実稼働環境で問題ないはずです。

Gunicorn+Gevent は、非同期 Python Web サーバーに適しています。Tornado と比較するには、独自のテストを実行する必要があります。アプリケーションがベンチマークの対象として動作しない可能性があるため、公開されているベンチマーク テストは誤解を招く可能性があります。

SSL のサポートについては、GunicornTornadoの両方がnginxなどのリバース プロキシの背後で実行することを推奨しています。リバース プロキシの背後でそれらを実行することのその他の利点には、低速のクライアントと不正な HTTP 要求の処理の改善が含まれます。

于 2012-12-13T06:10:38.363 に答える