Остановите даже машину после всех данных, загруженных многими волокнами

Я пытался получить данные из остальных 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, который обеспечивает обратный вызов, когда все запросы были выполнены. Пример, приведенный во второй ссылке, делает то, что вам нужно.

Другие вопросы по тегам