私は、サーバーに5秒から10秒の要求を送信するスクリプトを用意しています。私が持っている最も重要な要件は、1秒あたりの要求の制限です。それは常に特定の人物でなくてはならない。それを行うために私は一定の時間間隔(前の要求を送るのに必要な時間を引いた後)の後に要求を送ります。ソケット送信動作を高速化する(Pythonで)
問題:一部のリクエストは速く送信されますが、他のリクエストはsock.sendall()ステップで時間がかかりすぎます。これは、送信バッファがいっぱいで、バッファがクリアされるまで実行がブロックされているためです。
バッファをすばやくフラッシュするにはどうすればよいですか?私が試したオプションの
一つはネーグルを無効にすることです:
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
が、物事を改善していないようでした。
もう1つのオプションは、sendall()呼び出しの前に要求の長さに送信バッファを設定することです。
予測可能な1秒あたりの要求を得るためにできることはありますか?
私はちょうど考えました:もう少し多くの要求を毎秒行ういくつかのプロセスがあり、うまくいけば結果がより予測可能になります。
OSはCentosです。
アップデート:接続後にソケットオプションを設定する際に間違いました。サイズバッファのように見えるのは、connect()呼び出しの前にのみ設定できます。 TCP_NODELAYと同じです。何か違いがあれば、テストする時間はまだありません。
ネットワーク側の問題やサーバー側の負荷が原因で、制御できないことがあります。 – Keith