TCPサーバーを構築するための優れたPythonネットワークライブラリですか?

StackOverflow https://stackoverflow.com/questions/441849

  •  22-07-2019
  •  | 
  •  

質問

私は、TCP / IPサーバーを構築するためのPython用のネットワークライブラリはどこにあるのかと思っていました。 Twistedが思い浮かぶかもしれないことは知っていますが、ドキュメントは乏しく、ずさんで、散らばっているようです。

また、Twistedを使用すると、select.select()を使用して自分のサーバーをローリングするよりも利点がありますか?

役に立ちましたか?

解決

ドキュメントは少し簡潔であることに同意する必要がありますが、チュートリアルではすぐに操作を開始できます。

http://twistedmatrix.com/projects/core/documentation/ howto / tutorial / index.html

Twistedとその延期のイベントベースのプログラミングパラダイムは、最初は少し奇妙かもしれませんが(私にとっては)、学習曲線の価値があります。

独自のフレームワークを作成する場合よりもはるかに複雑な作業を迅速に実行できるようになります。また、Twistedが非常に生産性が高いことが証明されているため、バグハントが少なくなります。

Twistedが提供できるものを提供できる別のフレームワークを本当に知りません。そのため、たとえドキュメントが心の弱い人でなくても、私の投票は間違いなくTwistedになります。

SocketServerは良い中間点であるというGregに同意しますが、アプリケーションのターゲットオーディエンスとそのデザインによっては、Twisted(非常に便利なPerspectiveBrokerが思い浮かびます) - http://twistedmatrix.com/projects/core/documentation/howto/ pb-intro.html

他のヒント

標準ライブラリには、SocketServerおよび必要に応じて十分な関連モジュールが含まれています。これは、Twistedのような複雑なフレームワークと、独自のselect()ループをローリングすることとの良い中間点です。

Twistedを使用したくない場合は、をチェックしてください。 SocketServer.ThreadingTCPServer 。使い方は簡単で、多くの目的に十分な十分です。

ほとんどの場合、Twistedはおそらくより高速で信頼性が高いので、可能であればドキュメントを確認します:)

他のポスターをもう一度繰り返すための答えを追加するだけです-Twistedを使用する価値があります。ねじれたものを使用するものと同じように機能しなくなる別のTCPサーバーを記述する理由はありません。唯一の理由は、自分で書く方が開発者のほうがはるかに高速である場合ですが、弾丸を噛んで今ひねりを覚えれば、将来のプロジェクトは大いに役立つでしょう。そして、他の人が言ったように、最初からツイストを使用すると、より複雑なことを行うことができます。

3つのアプローチを試しました:

  • 独自のselect()ループを記述するフレームワーク(ほとんど死んでいますが、必ずしもそうではありませんお勧めします。)
  • SocketServerの使用
  • ツイスト

トラフィックがかなり少ない内部WebサービスにSocketServerを使用しました。かなりトラフィックの多い内部ロギングサービスに使用されます。どちらも完璧に機能し、本番環境での使用にはかなり信頼できるようです。パフォーマンスが必要なものについては、Twistedの方がはるかに優れていると思いますが、アーキテクチャを理解するのは大変な作業です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top