TCP/IP サーバーを構築するための Python 用のネットワーク ライブラリには、どのようなものがあるのだろうと思っていました。Twisted が頭に浮かぶかもしれないことは知っていますが、ドキュメントは少なく、ずさんで、散らばっているように思えます。
また、Twisted を使用すると、select.select() を使用して自分のサーバーをロールするよりも利点がありますか?
TCP/IP サーバーを構築するための Python 用のネットワーク ライブラリには、どのようなものがあるのだろうと思っていました。Twisted が頭に浮かぶかもしれないことは知っていますが、ドキュメントは少なく、ずさんで、散らばっているように思えます。
また、Twisted を使用すると、select.select() を使用して自分のサーバーをロールするよりも利点がありますか?
ドキュメントが少し簡潔であることに同意する必要がありますが、チュートリアルを使用するとすぐに実行できます。
http://twistedmatrix.com/projects/core/documentation/howto/tutorial/index.html
Twisted とその deferred のイベントベースのプログラミング パラダイムは、最初は少し奇妙かもしれません (私にとってはそうでした) が、学習曲線の価値はあります。
独自のフレームワークを作成する場合よりもはるかに複雑な作業をより迅速に開始して実行できます。また、Twisted は製品で十分に証明されているため、バグ ハントが 1 つ少なくなります。
Twisted と同じくらい多くの機能を提供できる別のフレームワークを私はよく知りません。そのため、ドキュメントが気弱な人向けでなくても、間違いなく Twisted に投票するでしょう。
SocketServer は良い中間点であるという Greg の意見に同意しますが、アプリケーションのターゲット ユーザーとその設計によっては、Twisted で期待できる素晴らしい機能がいくつかあるかもしれません (非常に便利な PerspectiveBroker が思い浮かびます - http: //twistedmatrix.com/projects/core/documentation/howto/pb-intro.html )
標準ライブラリには、必要に応じて十分な SocketServer および関連モジュールが含まれています。これは、Twisted のような複雑なフレームワークと独自の select() ループのローリングとの間の適切な中間点です。
他のポスターを繰り返すための答えを追加するだけです。Twistedを使用する価値があります。ツイストを使用した場合と同じように機能しなくなる別のTCPサーバーを作成する理由はありません。唯一の理由は、開発者の観点から自分で作成する方がはるかに速い場合ですが、弾丸を噛んで今すぐねじれを学ぶと、将来のプロジェクトに大きなメリットがあります。そして、他の人が言っているように、最初からツイストを使用すると、はるかに複雑なことを行うことができます。
私は3つのアプローチを試しました:
トラフィックがかなり少ない内部 Web サービスに SocketServer を使用しました。かなりトラフィックの多い内部ロギング サービスに使用されます。どちらも完璧に機能し、本番環境での使用にはかなり信頼できるようです。パフォーマンスが必要な場合は、Twisted の方がはるかに優れていると思いますが、アーキテクチャについて頭を悩ませるのはもっと大変です。
Twisted を使いたくない場合は、SocketServer.ThreadingTCPServerをチェックしてみてください。使い方は簡単で、多くの目的に十分対応できます。
ほとんどの場合、Twisted の方が高速で信頼性が高いので、できればドキュメントを読んでみてください :)