私はソケットを作成し、それを使ってPythonプロセスと通信します。ソケットセットブロッキングレイズOSError:[Errno 11]リソースは一時的に利用できません
私はすでにファイルディスクリプタを持っているので、私はソケットをこのように作成します。
sock = socket.fromfd(fd, socket.AF_INET, socket.SOCK_STREAM)
私は要求の多くを受け取った場合、それは[ERRNO 11]リソース一時的に利用できないが発生します。それはI/Oモードをノンブロッキングにあった、それはEAGAINエラーを上げていたよう
When the message does not fit into the send buffer of the socket, send() normally blocks, unless the socket has been placed in nonblocking I/O mode. In nonblocking mode it would fail with the error EAGAIN or EWOULDBLOCK in this case. The select(2) call may be used to determine when it is possible to send more data.
は、次にそれが見えます。
だから私は、ブロッキングに設定します。
sock.setblocking(1)
しかし、私は同じエラーを持っておきます。またsocket.fromfdドキュメントは言う:まず
The socket is assumed to be in blocking mode
"* it * raise ..."と言うとき、あなたは 'socket.fromfd'呼び出しからその例外を取得しているということですか? –
私はOSError以外のtryにラップされたソケットを介してデータを送信する別の方法があります。e:Errno 11を発生させます。 – lapinkoira
AFAIK、 'send'呼び出しで' EAGAIN'(errno 11)ソケットがノンブロッキングに設定されているか、(b) 'setsockopt(...、SO_SNDTIMEO、...) 'でタイムアウトが設定されています –