Остановите даже машину после всех данных, загруженных многими волокнами
Я пытался получить данные из остальных API, используя запросы HTTP и даже машины. Для этого используйте em-net-http, fiber (ruby1.9.2p290). Мой псевдокод выглядит так:
EM.run do
Fiber.new do
api_client.get_data_1
end.resume
Fiber.new do
api_client.get_data_2
end.resume
...
Fiber.new do
api_client.get_data_n
end.resume
EventMachine.stop
end
Вопрос: Как остановить EM после загрузки всех данных? Я посчитал запросы, но это плохая практика. Есть ли шаблон для этого? Я также использовал em-synchrony, но это медленнее для меня.
Спасибо
1 ответ
Решение
Используйте em-http-request и интерфейс multi-http, который обеспечивает обратный вызов, когда все запросы были выполнены. Пример, приведенный во второй ссылке, делает то, что вам нужно.