【发布时间】:2012-07-30 08:00:21
【问题描述】:
我有一长串需要为我的服务打开的 URL。每当我尝试打开整个列表时,都会在启动程序时收到许多错误,例如:[Errno 24] Too many open files。我正在使用 urllib2 和 gevent。
有人有解决办法吗?
谢谢。
【问题讨论】:
-
需要显示一些代码。 sscce.org
标签: python python-2.7 urllib2 gevent
我有一长串需要为我的服务打开的 URL。每当我尝试打开整个列表时,都会在启动程序时收到许多错误,例如:[Errno 24] Too many open files。我正在使用 urllib2 和 gevent。
有人有解决办法吗?
谢谢。
【问题讨论】:
标签: python python-2.7 urllib2 gevent
使用Gevent.pool 一次只打开一定数量的网址,然后在打开网址后重用这些greenlet。
【讨论】:
由于我们仍然不知道您到底在做什么,我只能猜测:您同时打开了许多 URL,然后您才尝试阅读它们。相反,您应该/可以打开-读取-关闭它们,然后前进到下一个。
或者,您可以创建一个支持并发的 URL 加载器:打开 一些 url 并尝试同时读取它们。关闭一个后,您可以开始打开下一个。如果您一次将其限制为 5 或 10 个,那么您应该不会再遇到问题了。
【讨论】: