elixir任务中的大量数据

时间:2017-10-13 10:34:54

标签: elixir

我在Elixir上有一个应用程序应该接收大量数据,然后将数据分发给n个部分。

这些部件必须并行处理,但应同时限制员工人数。作为处理结果,员工返回大量值。

主要过程在收到所有工人的结果后,将所有工具粘合在一起。

让员工通过任务是一个好主意吗?员工流程必须返回大量数据会有问题吗?

或者最好是使用GenServer建立一个员工池,并进行同步调用?

1 个答案:

答案 0 :(得分:1)

Task.async_stream提供了一个简单的API来拆分工作,然后收集结果,同时限制并发性:

文档中的示例:

max_concurrency = System.schedulers_online * 2
stream = Task.async_stream(collection, Mod, :expensive_fun, [], max_concurrency: max_concurrency)
Enum.to_list(stream)