套接字集阻塞引发OSError:[Errno 11]资源暂时不可用

时间:2016-07-06 10:49:02

标签: python sockets unix

我正在创建一个套接字并使用它来与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文档也说:

  

假设套接字处于阻塞模式

1 个答案:

答案 0 :(得分:-4)

首先,我不知道“python进程”是什么。流程是一个过程。什么语言写的东西,或解释者可能解释的东西,与任何事情无关。

接下来,我不确定“我以这种方式创建套接字,因为我已经有了文件描述符”的意思。我没有看到你创建任何东西,而是将一些值从一个结构赋值给另一个变量。

不知道你如何原封不动地实例化 socket ,无法猜出资源问题可能是什么。