Elixir:在单独的进程中获取外部 API 的正确方法是什么
Elixir: what is right way for fetching external API in separate processes
我想从外部获取数据API: 当只更改一个参数(页面)时,这是一个类似的请求。我想让它并行处理,但在一个地方收集数据。
在 Elixir 中完成它的正确方法是什么?
我做了一些调查,现在只有一个解决方案:
使用 Agent
保存来自 API 次调用的数据,使用 Task
保存来自 API.
次调用的数据
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()
我想从外部获取数据API: 当只更改一个参数(页面)时,这是一个类似的请求。我想让它并行处理,但在一个地方收集数据。
在 Elixir 中完成它的正确方法是什么?
我做了一些调查,现在只有一个解决方案:
使用 Agent
保存来自 API 次调用的数据,使用 Task
保存来自 API.
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()