2013-02-16 2 views
1

У меня есть метод, который принимает URL и возвращает Promise [наполнять избирательные урны фальшивыми бюллетенями]:Как бороться с java.net.SocketException: слишком много открытых файлов при отправке/перезагрузке?

def getStuff(url: String): Promise[Stuff] = Http(...).map(...) 

и зову его на большой список (~ 1300 пунктов) строк:

Http.promise.all(urls.map(getStuff)).apply 

Некоторые обещаний, выполненных правильно, но около ~ 50 результат в "java.net.SocketException: Слишком много открытых файлов". Что я делаю не так? Может быть, я должен использовать другой способ выполнения этой задачи?

+0

Linux или Windows,? – twillouer

ответ

2

Это ограничение операционной системы.

См http://wiki.magnolia-cms.com/display/WIKI/Too+Many+Open+Files, например, на Linux

+0

Ну, это печально. Но как я могу исправить это в этом конкретном случае? Почему диспетчеризация выделяет больше этих файлов, чем необходимо? – Rogach

+0

Вы должны ограничить запрос своим собственным способом. Используете ли вы аккку? – twillouer

+0

Нет, не акка. Просто отправка, как и в моем примере. – Rogach