C
cutoff
Есть текстовый файл с базой сайтов > 100k, может кто-нибудь подсказать как грамотно организовать параллельную обработку в функциональном стиле с целью отфильтровать неактивные? С помощью Future или AkkaStreams
Мои попытки:
Тут есть 2 проблемы:
Мои попытки:
Код:
@throws(classOf[java.io.IOException])
def get(url: String) = io.Source.fromURL(url).mkString
def isUp(url: String):Future[Boolean] = Future {
try {
get(url)
true
} catch {
case e: java.io.IOException => {
println("URL " + url + " is down")
false
}
}
}
val list = Source.fromFile("sites.txt").getLines().toList.map("http://" + _)
val futures= list.map(isUp)
Тут есть 2 проблемы:
- Создаю список из фьючеров, которые мгновенно запускаются параллельно, а учитывая размер коллекции, через минуту мой комп просто зависает, нужно что-то аналогичное тред пулу, только в функциональном мире
- Производное от 1, нужно подождать пока все фьючеры отработают, у меня есть мысли, постоянно проходить по списку и смотреть isCompleted, но это какой-то костыль