小编Lui*_*los的帖子

在生成的Elixir进程崩溃后,不会生成其他进程

在我的程序中,在读取CSV文件中的每一行之后,会生成一个新进程以下载该图像并将其保存到文件系统:

defmodule Downloader.CLI do
  alias Downloader.Parser
  alias Downloader.Getter

  def main(_args \\ []) do
    Enum.map(Parser.run, fn(line) ->
       line -> handle_download(line)
    end)
  end

  defp handle_download({ :ok, %{ "image_id" => image_id } }) do
    pid = spawn(Getter, :run, [])
    send(pid, {self(), image_id})

    receive do
      :ok -> nil
      err -> IO.inspect(err)
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

如果此CSV文件包含1000个图像,则VM中将创建1000个不同的elixir进程.如果这些进程中只有一个抛出异常,则不会继续其他进程.也就是说,可执行文件不会冻结,但不会下载其他图像.

为什么会这样?如果其他进程彼此独立,为什么不能继续执行?我想错过一些简单的东西,但我在其他任何地方都找不到它.

erlang elixir

3
推荐指数
1
解决办法
123
查看次数

标签 统计

elixir ×1

erlang ×1