Эликсир: как правильно извлекать внешний API в отдельных процессах - PullRequest
0 голосов
/ 22 мая 2018

Я хочу получить данные из внешнего API: это аналогичный запрос, когда изменяется только один параметр (страница).Я хотел бы получить его параллельно обрабатывать, но собирать данные в одном месте.Как правильно сделать это в эликсире?Я провел некоторое исследование и пока имею только одно решение: используйте Agent для сохранения данных из вызовов API и Task для API вызовов.

1 Ответ

0 голосов
/ 23 мая 2018

Task.async_stream может соответствовать вашим потребностям.

(1..10) 
|> Task.async_stream(fn n -> get_page(n) end, max_concurrency: 10, timeout: 30_000, ordered: true)
|> Stream.map(fn {:ok, data} -> data end)
|> Enum.to_list()
...