【发布时间】:2017-10-21 10:45:36
【问题描述】:
我在 Elixir 上有一个应用程序,它应该接收大量数据,然后将数据分发到 n 个部分。
这些部分必须并行处理,但应限制同时处理的员工数量。作为处理的结果,员工返回大量值。
主进程在收到所有工作人员的结果后,将所有内容粘合到一个文件中。
通过Task让员工成为一个好主意吗?员工的进程必须返回大量数据会不会有问题?
或者最好用 GenServer 建立一个员工池,并进行同步调用?
【问题讨论】:
-
使用
File.stream从文件中读取数据,然后通过管道将其发送到Stream.chunk_by,并在其函数中将数据块调度到您提前设置的任何处理器(通过@987654324 @) 使用 elixir 的send机制。 -
每次调用send都不会等结果返回再发送吗?
-
不,你将它发送到数据到进程,然后它并行工作,然后它可以将其结果发送到另一个为你收集结果的节点。与此同时,您继续处理传入
File.stream中的下一个块@ -
您的问题似乎是Flow 的完美用例。
-
我的方法是尝试记录 Elixir 可以产生的所有日志,甚至请求日志。
标签: elixir