gen-server相关内容

正常关闭GenServer

我用GenServer编写了一个Elixir应用程序,它在引导时启动外部应用程序,并在退出时将其关闭并执行其他清理。我已在init/1回调中添加了启动功能,并在terminate/2回调中添加了清理代码。 启动GenServer时init代码运行正常,手动发送:stop信号时也会调用terminate方法,但在IEX中出现意外关机和中断(如按Ctrl+C)时,不会调用终止代码。 目前, ..
发布时间:2022-02-25 22:52:10 其他开发

如何使Genserver以频率值Elixir运行

我已经看到了许多GenServer实现,我正在尝试创建具有此类规范的实现,但是我不确定其GenServer的用例. 我有一个状态,例如 %{url:"abc.com/jpeg",名称:"Camera1",id :: camera_one,频率:10} 我有这100种状态,具有不同的值,我的用例包含5个步骤. 以Gen身份开始每个州{?}. 将HTTP请求发送到该URL. 获取 ..
发布时间:2021-05-04 18:33:49 其他开发

Erlang gen_server通讯

如果我有多个服务器实例,如何将信息从一个服务器传递到另一个服务器,例如: 我有这个: ... -record(id,{name,hash}). -record(state, {id ,m, succ, pred}). start(Name, M) -> gen_server:start_link({local, Name}, ?MODULE, {new_ring, Name ..
发布时间:2020-06-16 18:41:45 其他开发

Elixir GenServer并行handle_call

Phoenix框架上有一个应用程序. 需要GenServer,它将检查一些值. 从控制器开始验证这些值(客户端发出请求,GenServer值检查,客户端收到响应). 一旦handle_call是同步的,那么当10个客户端一次呼叫10个调用handle_call时会发生什么?所有10个呼叫将被并行处理还是按队列顺序处理? 解决方案 GenServer仅处理单个呼叫,其他消息 ..
发布时间:2020-06-16 18:41:43 其他开发

正常关闭GenServer

我用GenServer编写一个Elixir应用程序,该应用程序在启动时启动外部应用程序,然后将其关闭,并在退出时进行其他清理.我在 init/1 回调和清理代码中添加了启动功能在 terminate/2 回调中. 启动GenServer时,init代码工作正常,当手动发送:stop信号时,也调用terminate方法,但是在意外关闭和中断的情况下 (在IEx中按Ctrl + C的情况下),则 ..
发布时间:2020-06-16 18:41:40 其他开发

为什么我们需要simple_one_for_one?

有人告诉我,simple_one_for_one对聊天应用程序非常有用,因为每个聊天客户端都是一个服务器进程(gen_server).这是正确的吗? 我想知道为什么我们需要它吗?为什么不只创建一个中心服务器(gen_server)来处理所有聊天客户端通信?因为也许聊天客户端的数量很大,所以只有一台服务器无法快速处理,这会使系统变慢吗? 我认为也许创建过多的服务器(例如simple_on ..
发布时间:2020-06-13 20:18:42 其他开发

Erlang shell停止加载我的模块

上周这个工作很好。我会打开 cd myprojectdir erl (erlang shell)。 c(房间)。 {ok,R} = room:go()。 然后我可以使用gen_server将消息发送到R,与房间模块进行交互。 我开始在一个牛仔路由分支。我看到事情工作正常,当我看着它,我正在收到编译错误。所以我回到了我的主分公司。在shell中仍然有错误,甚至回滚一些提交, ..
发布时间:2017-08-27 14:09:11 其他开发语言

Erlang停止gen_server

我有gen_server: start(UserName) - > case gen_server: {ok,_} - 的开始({global,UserName},player,[],[]) io:format(“Player:”++ UserName ++“started”); {error,Error} - > 错误 结束 ... 现在我想写功能 ..
发布时间:2017-08-27 13:18:07 其他开发语言

一个Erlang gen_server在另一个节点上如何启动一个gen_server?

我有一个Erlang应用程序,有一点太资源匮乏,留在一个节点上。我正在使gen_servers从一个进程移动到另一个进程 - 这是相对容易的。我处于最后一个障碍:获取创建这些gen_servers的工厂进程,以在远程节点上而不是本地进程生成它们。 start_link的默认行为显然只在本地启动,但我看不到任何改变的选项。 看起来我将不得不有创意的解决方案,并想看看有没有人已经实现了这样的事情 ..
发布时间:2017-08-27 13:16:12 其他开发语言

Erlang管理员重新启动连接到Downed主机的策略

我正在使用erlang作为服务之间的桥梁,我想知道人们为处理连接失败而提出了什么建议? 我正在从本地文件和将其管理到AMQP,可以想象AMQP经纪人可能会下降。对于这种情况,我想继续重试连接到AMQP服务器,但是我不想用这些连接尝试来连接CPU。我的倾向是将睡眠重新启动AMQP代码。这不是“黑客”本质上规避了快速失败的目的,并且让erlang处理它吗?更一般地说,应该使用erlang主管行为 ..
发布时间:2017-08-27 12:45:26 其他开发语言

获取gen_server / gen_fsm状态进行调试

是否可以获取 gen_server 进程的当前状态(大概是通过发送一些系统消息)?调试时可能很有用。 当然,我可以添加一条消息,将当前状态返回到 handle_call : get_state(服务器) - > gen_server:call(Server,'$ get_state')。 %%在每个gen_server中我想调试 ... handle_call('$ g ..
发布时间:2017-08-27 12:26:23 其他开发语言

如何使用Erlang的gen_server定期执行操作?

我想启动一个gen_server,另外,每分钟都会执行一个动作。 什么是最好的安排方式? 解决方案 你有两个简单的选择,使用 timer:send_interval / 2 或二郎:send_after / 3 。 send_interval 更容易设置,而 send_after (在Erlang模块中使用)更可靠,因为它是一个内置 - 请参阅效率指南。 使用 send_aft ..
发布时间:2017-08-27 11:44:48 其他开发语言

erlang OTP主管崩溃

我正在通过Erlang文档,试图了解设置OTP gen_server和主管的基本知识。每当我的gen_server崩溃,我的主管也会崩溃。事实上,每当我在命令行上出现错误时,我的主管都会崩溃。 我希望gen_server在崩溃时重新启动。我期望命令行错误在我的服务器组件上具有任何。我的主管不应该完全崩溃。 我正在使用的代码是一个基本的“回显服务器”,可以回复您发送的内容,还有一个主管这 ..
发布时间:2017-08-27 11:37:09 其他开发语言

二郎神:使用gen_server区别:施放/ 2和标准的消息传递

我的工作虽然问题并注意到一些code其中一个previous程序员使用PID的标准约定传递消息!信息。我一直在使用gen_server:铸铁/ 2。我在想,如果有人可以给我两之间进行选择时解释关键的差异和考虑? 解决方案 有一些细微差别: 显然,gen_server处理铸件在 handle_cast 和 handle_info “正常”的消息。 系统投从来没有失败;它总是返回确定。 ..
发布时间:2016-07-21 10:19:12 其他开发