我有一长串需要为我的服务打开的 URL。每当我尝试打开整个列表时,都会在启动程序时收到许多错误,例如:[Errno 24] Too many open files
. 我正在使用 urllib2 和 gevent。
有没有人有任何解决方案?
谢谢。
我有一长串需要为我的服务打开的 URL。每当我尝试打开整个列表时,都会在启动程序时收到许多错误,例如:[Errno 24] Too many open files
. 我正在使用 urllib2 和 gevent。
有没有人有任何解决方案?
谢谢。
使用Gevent.pool 一次只打开一定数量的 url,然后在打开 url 时重用这些 greenlet。
由于我们仍然不知道您到底在做什么,我只能猜测:您同时打开了许多 URL,然后您才尝试阅读它们。相反,您应该/可以打开-阅读-关闭它们,然后前进到下一个。
或者,您可以创建一个支持并发的 URL 加载器:打开一些url 并尝试同时读取它们。关闭一个后,您可以开始打开下一个。如果您一次将其限制为 5 或 10 个,那么您应该不会再遇到问题了。