Phoenix / Erlang节点连接

时间:2019-02-26 09:09:12

标签: concurrency erlang elixir phoenix-framework distributed-computing

我在一台计算机上启动了一个Elixir Phoenix节点,而另一台计算机上启动了一个Erlang节点。 Erlang节点具有一个名为“ rec”的进程,该进程接受三个元素的元组:一个原子和两个字符列表。当我在Elixir节点上运行此代码时:

Node.spawn_link(node_name, fn -> send(:rec, {:create, uuid, link}) end)

它会根据需要运行,但是当我从Phoenix控制器运行它时,它将返回如下错误:

[error] Error in process #PID<14185.2561.0> on node :"node1@192.168.0.137" with exit value:
{:undef, [{#Function<0.87309885/0 in SlrRecorderApiWeb.CameraController.add/2>, [], []}]}

我应该怎么做才能正确运行它?

1 个答案:

答案 0 :(得分:2)

之所以会这样,是因为模块/没有加载到有问题的Erlang节点上:当您发送要在另一个节点上运行的SlrRecorderApiWeb.CameraController函数时,必须在其中定义该模块在两个节点上都加载。

好消息是您不需要在这里使用函数,只需使用:

fn

,消息将被发送到另一个节点上名为send({:rec, node_name}, {:create, uuid, link}) 的进程。