gen-server

    3熱度

    2回答

    Elixir的Mix and OTP Guide Chapter GenServer解釋瞭如何使用GenServer實施註冊服務器控股代理。 每個座席的PID保存在一張地圖中,其中的密鑰是由客戶端提供的座席名稱,值是座席的PID。 爲了避免保持到死劑的引用,導向提出了使用Process.monitor/1監視新創建的代理,並通過添加新的地圖略微修改的狀態下,稱爲refs,含有參考文獻(通過Proc

    1熱度

    1回答

    我的一項服務與限速的外部API進行通話,因此我希望確保每10秒發送一次不超過1次的呼叫。 我天真的做法是有一個長期運行的API服務,時間它在每次通話後: def handle_cast({:call_api, data}, state) do send_to_external_api(data) :timer.sleep(10000) {:noreply, state

    1熱度

    1回答

    我剛剛學習ETS和GenServer,我嘗試在我的應用程序啓動時初始化緩存。我很可能錯誤地設計了這個問題,導致我在下面描述的問題,所以任何反饋都會有幫助。 當應用程序初始化時,:ets表通過worker創建。 def start_link do GenServer.start_link(__MODULE__, :ok) end def init(:ok) do tab =

    1熱度

    1回答

    我正在關注http://learnyousomeerlang.com/static/erlang/kitty_gen_server.erl。 我有我的應用程序邏輯在temple.erl裏面。所有這些代碼都經過測試&按我的預期運行。我的land.erl旨在成爲包含聖殿的服務器。 我的理解(請糾正任何無知)是我可以使用gen_server來抽象消息傳遞並以最小的開銷跟蹤狀態。 我明白,在我的初始化函數

    1熱度

    1回答

    您好我想實施分佈式緩存作爲練習。緩存模塊基於gen_server。緩存由CacheSupervisor模塊啓動。起初我試着在一個節點上運行它,這很好用。現在我試圖將我的緩存分佈在兩個節點上,這兩個節點位於筆記本電腦上的兩個打開的控制檯窗口中。 PS: 在寫這個問題,我意識到,我忘了我的第三個窗口連接到其他節點。我修好了,但我仍然有原始錯誤。 控制檯: 在我的第三個窗口連接我的節點我打電話Cache

    0熱度

    1回答

    我有一個索引頁面,當用戶登錄時,它會顯示數據庫中的所有表格(表格按鈕)。表格可以有順序。所以,它就像用戶點擊表格一樣,重定向到訂單的創建路徑並創建訂單。或者如果表格有訂單,它會重定向到訂購展示頁面。每個訂單都有一個table_id。通過顯示不同的顏色,表格顯示現在是否忙碌。 我想要做的是改變表按鈕的顏色實時。因此,如果一個用戶創建訂單,另一個用戶可以在表格更改顏色時立即看到它。我怎樣才能做到這一點

    0熱度

    2回答

    我想在10秒定時器上更新我的進程狀態。 -define(INTERVAL, 3000). start_link() -> gen_server:start_link(?MODULE, [], []). action(Pid, Action) -> gen_server:call(Pid, Action). init([]) -> erlang:send_a

    2熱度

    2回答

    我有一個GenServer,負責聯繫外部資源。調用外部資源的結果並不重要,有時可能會出現故障,因此使用handle_cast似乎適用於其他代碼部分。我的外部資源有一個類似界面的模塊,我使用一個GenServer來訪問資源。到現在爲止還挺好。 但是,當我試圖寫這個gen_server測試,我無法弄清楚如何測試handle_cast。我有GenServer的接口功能,我試圖測試那些,但除非GenSer

    0熱度

    3回答

    我有一個問題,我用根服務器做一些簡單的工作是這樣的: one handle_cast to do a long time work(takes 60 seconds) one handle_cast to do a very fast work ,一切都很好,當流量低。但是,當服務器進程在第一次長時間工作時,客戶端向服務器發送數千條消息(例如郵箱中的1000000條消息)時,長時間工

    1熱度

    1回答

    我有一個Erlang應用程序,監控程序啓動gen_server。產生的gen_server在它的init/1中有一個邏輯來掛鉤一個新的進程到管理員。 當它只是做這個操作, supervisor:start_child(supervisor_name, Child_spec), 在init/1中的應用程序內掛了。但如果我用, rpc:cast(node(), supervisor, start_