gen-server

    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_

    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 =