3

私はsocketsPythonスクリプトで、おそらく20/sの山を使用しています。これらは一時的なもので、3秒で完了します。私はsocket.close()すべてに送信するのに良い仕事をしようとしましたが、何らかの理由CLOSE_WAITでステータスがsocketsまだ積み重なっています。

これらを強制終了するにはどうすればよいCLOSE_WAIT socketsですか?または、それらに低い値を設定できtimeoutますか?それらは、クラッシュするまで積み重なってしまいます。

これは私のソケットコードです:

        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0)
        s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        s.settimeout(2) # 2 seconds timeout

        l_onoff = 1
        l_linger = 0
        s.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, struct.pack('ii', l_onoff, l_linger)) 

        self.s = s          
        streamloop.add_callback(self.connect, s)

これは私の終わりです:

def full_close(self):
    try:
        self.stream.close()
        self.s.close()
    except Exception:
        print 'full_close err: ', sys.exc_info()[1:3]
        pass    
4

1 に答える 1

1

どこかでソケットが漏れているようですね。

詳細については、 https://stackoverflow.com/a/11240739/412080を参照してください。

于 2013-03-27T14:13:47.587 に答える