gpt4 book ai didi

elixir - 分布式 Elixir 示例不起作用

转载 作者:行者123 更新时间:2023-12-02 08:28:10 25 4
gpt4 key购买 nike

我有一个非常简单的 Elixir 代码示例,我想在不同的节点上运行。

第一个节点位于我的笔记本电脑上,第二个节点是 Raspberry Pi,通过 SSH 访问。

代码很简单:

# node1@my-computer
defmodule Hello do
def world, do: IO.puts "hello world"
end

# node2@raspberrypi
iex> Node.spawn_link :"node1@my-computer", fn -> Hello.world end

我预计Node.spawn_link会打印"hello world"在 Raspberry Pi 上,但它显示错误:** (EXIT from #PID<0.66.0>) no connect

在同一台机器上有两个不同的 iex实例此代码工作得很好。

我正在 node1 上启动 IEx session 与 iex --sname node1 --cookie secret以及 node2iex --sname node2 --cookie secret .

还值得注意的是,在我的 Raspberry Pi 上 iex以此警告开始:

warning: the VM is running with native name encoding of latin1 which may cause Elixir to malfunction as it expects utf8. Please ensure your locale is set to UTF-8 (which can be verified by running "locale" in your shell)
Interactive Elixir (1.0.5) - press Ctrl+C to exit (type h() ENTER for help)

最佳答案

我认为您需要在节点名称中添加 @ 符号才能将它们解释为单独的联网计算机

iex --name node@machinename1 --cookie mycookie
iex --name node@machinename2 --cookie mycookie

然后在第一个 iex shell 中连接节点:

Node.connect :"node@machinename2"

注意冒号语法,它使节点名称成为一个 Elixir 原子。由于 @ 符号,因此需要引号。如果遇到问题,您可以先尝试使用原始 IP 地址的计算机名称,然后再尝试 dns 名称注意:我使用 --name 而不是你的 --sname

关于elixir - 分布式 Elixir 示例不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32152093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com