काम नहीं करता है मेरे पास एक बहुत ही सरल इलीक्सिर कोड नमूना है जो मैं अलग-अलग नोड्स पर चलाना चाहता हूं।वितरित Elixir उदाहरण
पहला नोड मेरे लैपटॉप पर है, दूसरा एक रास्पबेरी पीआई है, जो एसएसएच के माध्यम से पहुंचा है।
कोड सरल है:
# [email protected]
defmodule Hello do
def world, do: IO.puts "hello world"
end
# [email protected]
iex> Node.spawn_link :"[email protected]", fn -> Hello.world end
मैं उम्मीद है कि Node.spawn_link
रास्पबेरी Pi पर "hello world"
मुद्रित होगा, लेकिन इसके बजाय यह दो अलग अलग iex
उदाहरणों इस के साथ ** (EXIT from #PID<0.66.0>) no connect
एक ही मशीन पर यह कहते हुए एक त्रुटि से पता चलता कोड बस ठीक काम करता है।
मैं node1
पर iex --sname node1 --cookie secret
और node2
पर iex --sname node2 --cookie secret
के साथ आईईएक्स सत्र शुरू कर रहा हूं।
यह भी मेरी रास्पबेरी 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)
आप अपने कंप्यूटर से 'कॉल कर रहे हैं नोड @ raspberry' (या उपाध्यक्ष से इसके विपरीत), आपको यह सुनिश्चित करने की ज़रूरत है कि आपने कहीं घोषित किया है कि मेजबान रास्पबेरी रास्पबेरी आईपी को इंगित करता है, अन्यथा रनटाइम को "रास्पबेरी" को कैसे ढूंढना नहीं है। हो सकता है कि अब आईपी का उपयोग करना एक आसान तरीका है: 'Node.spawn_link:" [email protected] ", ...'। जो भी जुड़ा हुआ है और क्या नहीं है, इसके बारे में अधिक जानकारी प्राप्त करने के लिए नोड में अन्य कार्यों का भी उपयोग करें। –
मैंने रास्पबेरी ('1 9 2.168.1.103') के स्थानीय आईपी को 'रास्पबेरीपीआई' को इंगित करने के लिए'/etc/hosts' को बदल दिया। एलिक्सीर ने शिकायत की कि '[त्रुटि] ** सिस्टम पूरी तरह से योग्य होस्टनामों का उपयोग करने के लिए चल रहा है ** ** होस्टनाम रास्पबेरी अवैध है ** ' ठीक है, तो मैं गया और नाम आईपी के लिए बदल दिया:' Node.spawn_link: "[email protected] .1.103 ", एफएन -> हैलो.वर्ल्ड एंड 'और उसने मुझे बताया कि' ** शुरू नहीं हो सकता: erlang :: लागू करें, [# फ़ंक्शन <20.54118792/0 में: erl_eval.expr/5>, []] ([ : लिंक]) पर: "[email protected]" ** ' मुझे यकीन है कि मैं यहां कुछ वास्तव में सरल याद कर रहा हूं। – thepanuto
ठीक है, मुझे मिल गया। यह आईपी चीज हर समय था, मैंने बस चीजों को खराब कर दिया। धन्यवाद, जोसे! – thepanuto