geventを使用して着信接続を受け付け、接続ごとのグリーンレットを使用してデータを返す小さなHTTPサーバーがあります。 (ローカル)クライアントは、サーバー側がクライアントに書き込み死ぬとソケットがCLOSE_WAIT状態にあるにもかかわらず、成功する:今すぐgevent tcpソケットは切断されていますが、データを送信することができます
$ ls -l /proc/21860/fd |grep 22
lrwx------. 1 mathieu mathieu 64 Mar 21 19:55 22 -> socket:[187093]
$ lsof |grep 187093
python 21860 mathieu 22u IPv4 187093 0t0 TCP localhost.localdomain:36072->localhost.localdomain:48908 (CLOSE_WAIT)
、私はgevent.socket.socketで作成したソケットのsendメソッドを期待します例外と一緒に失敗するが、私は誰も得られない!
def send(socket, data):
sent = socket.send(data)
while sent != len(data):
data = data[sent:]
sent = socket.send(data)
私の期待は間違っていますか?そうでない場合は、ここで何がうまくいかないでしょうか?