xmpppy。 filedescriptor在select中超出范围

时间:2012-04-09 07:18:45

标签: python select xmpp

我正在使用xmpppy。我创建了50多个xmpp连接线程。一段时间后我得到一个错误:

  

File "transports.py", line 199, in pending_data   return select.select([self._sock],[],[],timeout)[0] ValueError: filedescriptor out of range in select()

为什么会这样?

P.S。抱歉我的语言。

1 个答案:

答案 0 :(得分:3)

xmpppy使用select()系统调用来监视打开的连接。不幸的是,select()有一个相当尴尬的限制 - 在大多数系统上它只能监视文件描述符号达到一定限制的连接,通常是1024。

这意味着当您打开更多文件和连接时,最终会达到限制。

解决方案是让xmpppy使用poll()或更现代(但特定于操作系统)的API,例如epoll或kqueue。所有这些都可以通过Python 'select' module访问。