Я создаю приложение, которое использует места и категории от Foursquare. Чтобы ускорить некоторые алгоритмы и избежать слишком большого количества API-вызовов в Foursquare, я решил предварительно извлечь некоторые данные из Foursquare (используя его API) и сохранить их на своем конце в базе данных mongodb.
В текущей реализации алгоритма предварительной выборки для ускорения процесса я выполняю параллельные запросы к Foursquare, используя простой механизм потоков ruby, например:
threads = []
venue_ids.each do |venue_id|
threads << Thread.new
data = fetch_venue_from_foursquare(venue_id)
do_something_with(data)
end
end
threads.join
Обычно этот подход работает, но у меня есть несколько проблем с обработкой ошибок, и иногда он может просто остановиться и никогда не заканчиваться.
Как я могу улучшить этот подход?
Возможно ли использовать eventmachine в этом случае?