Python 套接字集阻塞引发操作错误:[Errno 11]资源暂时不可用

Python 套接字集阻塞引发操作错误:[Errno 11]资源暂时不可用,python,sockets,unix,Python,Sockets,Unix,我正在创建一个套接字,并使用它与python进程通信 我这样创建套接字是因为我已经有了一个文件描述符: sock = socket.fromfd(fd, socket.AF_INET, socket.SOCK_STREAM) 如果我收到大量请求,它将引发暂时不可用的[Errno 11]资源 当消息不适合套接字的发送缓冲区时, send()通常会阻塞,除非已将套接字放入 非阻塞I/O模式。在非阻塞模式下,它将失败并出现错误 在这种情况下,EAGAIN或EWOULDBLOCK。select(2)调

我正在创建一个套接字,并使用它与python进程通信

我这样创建套接字是因为我已经有了一个文件描述符:

sock = socket.fromfd(fd, socket.AF_INET, socket.SOCK_STREAM)
如果我收到大量请求,它将引发暂时不可用的[Errno 11]资源

当消息不适合套接字的发送缓冲区时, send()通常会阻塞,除非已将套接字放入 非阻塞I/O模式。在非阻塞模式下,它将失败并出现错误 在这种情况下,EAGAIN或EWOULDBLOCK。select(2)调用可用于 确定何时可以发送更多数据

然后它看起来像是在非阻塞I/O模式下,并引发了EAGAIN错误

因此我将其设置为阻塞:

sock.setblocking(1)
但我总是犯同样的错误。socket.fromfd文档还说明:

假定插座处于阻塞模式


首先,我不知道什么是“python进程”。一个过程就是一个过程。什么语言写的东西,或什么口译员可能解释的东西,没有任何关系

接下来,我不确定“我这样创建套接字是因为我已经有了一个文件描述符”是什么意思。我没有看到您创建任何东西,而是将一些值从一个结构分配给另一个变量


由于不知道您最初是如何实例化socket的,因此无法猜测资源问题可能是什么。

当您说“它将引发…”时,您的意思是您从
socket中得到该异常。fromfd
调用?我有另一种方法,它通过socket发送数据,并用try包装,除了OSError,e:这会引发Errno 11.AFAIK,如果(a)套接字设置为非阻塞,或者(b)使用
setsockopt(…,SO_SNDTIMEO,…)设置了超时,则在
发送
调用时应该只获得
EAGAIN
(Errno 11)
这就是我的想法,但正如您所看到的,我将其设置为非阻塞,并且我没有使用任何超时…我问题的第三行实际上是实例化一个套接字:socket.fromfd(fd,family,type[,proto]),这不是问题的答案。如果您需要澄清,请在评论部分提问。