10

これまでの興味深い回答に感謝します。上記の回答に照らして、質問を少し変更しました。

私が本当に知る必要があるのは、遅延とストレスの両方の期間を処理するように設計されたストレートなソケット ライブラリとは対照的に、socketserver であると推測します。つまり、「サーバー」として暗黙的に宣伝されたステータスを正当化する追加のメカニズムまたは機能があります。それとも少し使いやすいですか?

誰もがsocketserverを推奨しているようですが、socketとは対照的に、その理由はまだ完全には明らかではありません.

ありがとう!!!

標準ソケットライブラリhttp://docs.python.org/library/socket.htmlに基づいて、Pythonでいくつかのサーバープログラムを構築しました

負荷がないとしばらくするとスリープ状態になる傾向があることを除いて、それらは問題なく動作しているように見えることに気付きました. これは本番環境では問題にならない可能性があると思います (他にも多くの問題があることは間違いありません) が、ここでの作業に適切なコードを使用しているかどうかを知りたいです。

周りを見回すと、pythonもsocketserverライブラリを提供していることがわかりました - http://docs.python.org/library/socketserver.html

ソケットライブラリは、複数の接続 (通常は最大 5 つ) をリッスンする機能を提供します。

socketserverページによると、そのサービスは同期、つまりブロッキングですが、スレッドを介して非同期動作をサポートする場合があります。デフォルト値は最大5リクエストで、リクエストキューを維持する機能があることに気付きました...おそらくそれほど違いはありません。

また、Twisted が内部で socketserver を実行していることも読みました。ツイストのようなサイズの野獣には乗りたくないけど、それが価値のあるものでない限りね。

私の質問は、socketserver は socket よりも堅牢ですか? もしそうなら、なぜですか?

(そして、どうやって知っていますか?)

ちなみに、socketserver は python のソケットの上に構築されていますか、それとも完全に別のものですか?

最後に、おまけとして、標準のソケットが「眠りに落ちる」ような間違ったことを誰かが知っているなら、それについても気軽に声をかけてください。

ああ、それが違いを生むなら、ここでは3.xではなくpython 2.xについて話しています。

ありがとう!

jsh


まあ、技術的な答えはありませんが、人々の推奨に従ってSocketServerを実装しましたが、間違いなく信頼性が高くなっています。誰かが低レベルの説明を思いついたら、私に知らせてください...ありがとう!

4

1 に答える 1

10

socket モジュールは、パケットを送受信するための非常に低レベルのモジュールです。ドキュメントで述べられているように、「BSD ソケット インターフェイスへのアクセスを提供します」。

もっと精巧なものが必要な場合は、面倒な詳細を処理する「socketserver」がありますが、それでも比較的低レベルです。

その上に、CGI の有無にかかわらず、HTTP サーバー、XML-RPC サーバーなどがあります。これらはフレームワークであり、通常、そのコードがあなたのコードを呼び出すことを意味します。サーバーを完全に機能させるにはいくつかの「ギャップ」を埋める必要があるだけなので、物事は簡単になりますが、それはまた、それが何をするかを少し制御できないことも意味します.

ソケットサーバーの機能だけが必要な場合は、何らかの理由でホイールを再発明したい場合を除き、おそらくそれを使用します (新しいホイールを設計する正当な理由は常にあります。たとえば、それがどのように機能するかを理解するためなどです)。

于 2011-07-04T10:54:01.557 に答える