小编Nat*_*son的帖子

Elixir lang处理列表并行

我目前在elixir中并行处理列表时遇到问题.并行性的原因是我将结果保存到API中,如果我将它们全部爆炸,它会得到DDOS并关闭.

下面的代码应该拆分SQL查询的结果并处理单独任务中的每一行,并且当所有任务都已完成时,它应该终止.

发生的事情是,第一个任务在触发消息后导致脚本终止.我已经看到了答案,他们把接收放在一个函数中,该函数一遍又一遍地调用自己,但我觉得必须有另一种更好的方法来处理它.

results = Enum.chunk(results, 500)

# Give this process a name
Process.register(self(), :core)

# Loop over the chunks making a process for each
Enum.each results, fn(result) ->
  task = Task.async(fn -> Person.App.process(result, "Test", "1") end)
end

# And listen for messages
receive do
  {:hello, msg} -> IO.inspect msg
  {:world, _} -> "won't match"
end
Run Code Online (Sandbox Code Playgroud)

elixir

9
推荐指数
1
解决办法
1760
查看次数

将两个相同大小的列表转换为elixir中的键值对

我试图找出将两个相同大小的列表组合到键值对映射中的最佳方法.

我一直在使用相同的函数来处理这种情况一段时间用于CSV和原始SQL查询,这些查询返回某种标题列表以及行列表.

这是我一直在使用的功能

Enum.zip(list1, list2) |> Enum.into(%{})
Run Code Online (Sandbox Code Playgroud)

例如:

# For CSVS
header = ["column1","column2","column3"]
rows = [["a","b","c"],["d","e","f"]]
Enum.each rows, fn(row) ->                                                                                                                                                                              
  # Map the header to each row field                                                                                                                                                                    
  row = Enum.zip(header, row) |> Enum.into(%{})
  # Do some processing with the row
  IO.inspect row                                                                                                                                            
end
Run Code Online (Sandbox Code Playgroud)

elixir/erlang中是否有一个函数可以为我执行此操作,或者上面的zip /组合是最好的方法吗?

elixir keyvaluepair

8
推荐指数
1
解决办法
2057
查看次数

如何从Elixir中的结果中获取状态代码

我正在使用elixir和httpc erlang模块来ping网站.我可以很好地访问网站但是当我尝试使用status_code时,我得到一个参数错误.我可以看到数据存在于错误中,但我不确定为什么会抛出错误.

我应该提供什么参数?我认为这个函数只返回一个整数,但它看起来像是期待某些东西.

:inets.start
{:ok, result} = :httpc.request(:get, {'http://www.erlang.org', []}, [], [])
result.status_code()                                                               
** (ArgumentError) argument error
  :erlang.apply({'HTTP/1.1', 200, 'OK'}, :status_code, [])
Run Code Online (Sandbox Code Playgroud)

erlang elixir

2
推荐指数
1
解决办法
476
查看次数

标签 统计

elixir ×3

erlang ×1

keyvaluepair ×1