2016-07-06 41 views
0

我創建一個套接字,並用它來傳達給蟒蛇的過程。插座設置阻斷提高OSERROR:[錯誤11]資源暫時不可用

我創建套接字這種方式,因爲我已經有一個文件描述:

sock = socket.fromfd(fd, socket.AF_INET, socket.SOCK_STREAM) 

如果我收到了大量請求,這將引發[錯誤11]資源暫時不可用。

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.

然後它看起來像是處於非阻塞I/O模式,它引發了EAGAIN錯誤。

所以我把它設成阻塞:

sock.setblocking(1) 

,但我一直有同樣的錯誤。另外socket.fromfd文檔說:

The socket is assumed to be in blocking mode

+0

當你說「* *它會提高......」你的意思是你得到這個異常從'socket.fromfd'打電話? –

+0

我有過包裹在除OSERROR,E一試插座發送數據的另一種方法:這引起了errno的11 – lapinkoira

+0

據我所知,你應該只得到'EAGAIN'(錯誤11)在'send'呼叫如果(一)該套接字設置爲非阻塞,或(b)有'setsockopt(...,SO_SNDTIMEO,...)設置超時' –

回答

-3

首先,我不知道「python進程」是什麼。過程是一個過程。寫什麼語言,或者什麼樣的翻譯可能會解釋某些東西,與任何東西都沒有關係。

接下來,我不知道什麼是「我創建套接字這種方式,因爲我已經有一個文件描述符」的意思。我沒有看到你創造任何東西,而是將結構中的某些值賦給另一個變量。

不知道你最初是如何被實例化插座,則無法猜測的資源問題可能是。

+0

字面上我的問題的第三行是實例化一個套接字: socket.fromfd(fd,family,type [,proto]) https://docs.python.org/2/ library/socket.html#socket.fromfd – lapinkoira

+0

這不是問題的答案。如果您需要澄清,請在評論部分提出您的問題。 –

相關問題