如何使用>;编译python;1024个文件描述符?

如何使用>;编译python;1024个文件描述符?,python,centos,centos5,Python,Centos,Centos5,supervisord中问题的解决方法是: “编译支持>1024个文件描述符的Python” 有人能告诉我完成这项工作需要哪些改变吗?我已经提取了Python2.7.2源代码并准备就绪 运行centos 5.6,如果有必要的话 谢谢 更新:ulimit-n已设置为65535。这是启动supervisord时出现的全部错误: 回溯(最近一次呼叫最后一次): 文件“/usr/local/bin/supervisord”,第8行,在 加载入口点('supervisor==3.0a10','conso

supervisord中问题的解决方法是: “编译支持>1024个文件描述符的Python”

有人能告诉我完成这项工作需要哪些改变吗?我已经提取了Python2.7.2源代码并准备就绪

运行centos 5.6,如果有必要的话

谢谢

更新:ulimit-n已设置为65535。这是启动supervisord时出现的全部错误:

回溯(最近一次呼叫最后一次): 文件“/usr/local/bin/supervisord”,第8行,在 加载入口点('supervisor==3.0a10','console\u scripts','supervisords')() 文件“/usr/local/lib/python2.7/site packages/supervisor-3.0a10-py2.7.egg/supervisor/supervisord.py”,第372行,主文件 go(选项) 文件“/usr/local/lib/python2.7/site packages/supervisor-3.0a10-py2.7.egg/supervisor/supervisord.py”,第382行,在go d.main()中
文件“/usr/local/lib/python2.7/site packages/supervisor-3.0a10-py2.7.egg/supervisor/supervisord.py”,第95行,主文件 self.run()
文件“/usr/local/lib/python2.7/site packages/supervisor-3.0a10-py2.7.egg/supervisor/supervisord.py”,第112行,运行中 self.runforever()
文件“/usr/local/lib/python2.7/site packages/supervisor-3.0a10-py2.7.egg/supervisor/supervisord.py”,第230行,永远运行 r、 w,x=自身。选项。选择(r,w,x,超时)
文件“/usr/local/lib/python2.7/site packages/supervisor-3.0a10-py2.7.egg/supervisor/options.py”,第1113行,选择 返回select.select(r、w、x、超时) ValueError:select()中的filedescriptor超出范围


这实际上是基础
select(2)
系统调用的限制

从手册页:

An fd_set is a fixed size buffer.  Executing FD_CLR() or FD_SET() with a value of fd 
that  is  negative  or  is equal  to  or  larger  than  FD_SETSIZE will result in 
undefined behavior. 
标准FD_设置大小为1024

/usr/include/linux/posix_types.h:#define __FD_SETSIZE   1024

所以这不是Python的问题。
poll(2)
epoll(2)
系统调用的限制要大得多。您真正需要做的是使用
select.epoll
对象(仍在
select
模块中)而不是“select”

你用什么方法用完了描述符?如果只是打开文件就用完了,这与使用select()时用完的情况有很大不同,例如.my ulimit-n已经是:65535(oops过早地按enter键)。。。用完整的错误更新了问题如果运行python-c“import-resource;print-resource.getrlimit(resource.RLIMIT_-NOFILE)”?(6553565535)(尝试获取15char)您可以通过查看CPython源代码来验证这一点。它最终调用标准的C
fopen()
函数来打开文件。据我所知,python没有施加任何限制。