Машина событий для параллельных запросов API - PullRequest
0 голосов
/ 16 марта 2012

Я создаю приложение, которое использует места и категории от 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 в этом случае?

1 Ответ

2 голосов
/ 16 марта 2012

: -)

Выезд em-синхрония .

...