问题标签 [gen-server]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
erlang - error_logger 打印的服务器状态,是处理“Last message in was”时的状态?
原谅我糟糕的英语,
我的意思是当 gen_server 崩溃时,error_logger 打印"Last message in was"
和"When Server State"
,服务器状态值是处理最后一条消息之前的状态?
erlang - 关于 abcast 函数和 gen_server 名称唯一性的混淆
来自erlang.org/doc的 gen_server 部分:
start_link(ServerName, Module, Args, Options) -> 结果
如果已经存在指定
ServerName
的进程,则函数返回 {error,{already_started,Pid}}
显然,Erlang 不允许多个进程具有相同的名称。
好,现在让我们看看另一个函数:
abcast(名称,请求)-> abcast
向在指定节点本地注册的gen_servers发送异步请求。
Name
注意复数形式的使用。
既然 Erlang 要求 gen_server 进程的名称是唯一的,为什么该函数会实现向多个同名进程abcast
发送异步消息呢?
我错过了什么?
erlang - Gen_tcp over gen_server socket 监听立即关闭
我想在 gen_server 上使用 gen_tcp,代码如下:
好吧,tcp_listener
之前立即关闭waitConnetion
,我真的不明白为什么。
如果我handle_cast
在 init 部分移动代码,它可以正常工作。
为什么连接被关闭?我花了很多时间没有成功。
任何帮助表示赞赏。
编辑:
如果我在听众之后移动演员代码:
我发布的代码:
multithreading - 什么代码将从**删除(超时)连接**中恢复?
我在一个系统上有一个 gen_server,在其他 4 个系统上有 4 个客户端。当 gen_server 报告“** Removing (timedout) connection **”时,代码按预期运行 3 或 4 天。因为客户端可以在 gen_server 启动之前或之后变为活动状态,所以客户端在每次调用 gen_server 之前执行此代码:
在以任何顺序启动服务器或客户端时,这可以按预期工作。当在服务器上执行时,它们都连接并显示在 nodes() 中。
这是问题所在。在“** Removing (timedout) connection **”错误之后的某个时间,nodes() 显示了所有节点,这意味着客户端没有挂起并且已经执行了上面的代码。然而,与超时节点的通信尚未恢复。如果不重新启动客户端,如何重新建立连接?顺便说一句,重新启动客户端确实解决了这个问题。
任何帮助,不胜感激。
erlang - 由 Erlang 中的主管杀死所有 gen_server
在 Erlang 中,我有一个主管 (my_sup) 模块来启动和监控 gen_server 进程 (my_gen)。当 my_gen 被修改、编译和加载时,我需要重新启动应用程序。
有没有更好的方法来杀死主管(my_sup)的所有进程(gen_server)并再次重新启动进程(gen_server)?
erlang - Erlang 和 OTP in Action:为什么不能在 telnet 中调用 get_count?
在“Erlang and OTP in Action”一书的第 3 章中,有一个tr_server
例子。我对此有一些疑问:
为什么我们不能
tr_server:get_count().
在 telnet 中调用?该书指出该handle_info/2
函数将同步调用gen_server:call/2
. 任何人都可以提供有关问题的更多详细信息吗?tr_server
而且,gen_server
,erl console
和之间的关系是什么telnet
?
emacs - Erlang supervisor/gen_server 异常退出:noproc
我现在要疯了,试图弄清楚这是什么问题。
基本上我只想用 1 个服务器和 1 个 gen_event-behaviour 模块设置一个简单的主管。
现在的问题是我无法再启动它了,就是主管。
无论我做什么,我都会收到此错误:**异常退出:noproc
并且当使用文本跟踪器时,它显示它发生在 sRPG_supervisor:init/1 中。有了这个,您认为代码有问题,但是当我运行其他人的示例时,我得到了完全相同的结果(我已经下载了 Joe Armstrongs 示例并以相同的结果测试了 sellaprime_supervisor)。
当我在我的虚拟 Ubuntu 安装中运行它时,它曾经启动良好。然后我设置了它,这样我就可以在 Windows 中编码,但我什至从未测试过这种最简单的形式是否有效,而且显然出于某种原因它不起作用。
因此,如果有人遇到类似的问题,找到解决方案会很棒!我使用 erl6.3 作为带有 OTP 17 的 Erlang 版本。
这是我正在使用的代码,只是从 Emacs 生成的骨架中构建的:sRPG_supervisor.erl
sRPG_server.erl
sRPG_event_handler.erl
以下是发生情况的示例:
如您所见,在没有主管的情况下调用服务器时服务器可以正常工作。
我仔细研究了其他人遇到的类似问题,但无济于事。
erlang - 在这种情况下我应该使用哪种 Erlang 行为,即 gen_server 或 gen_fsm
我正在开发一种解决方案,用于查询特定事务的 SOAP Web 服务。一旦检索到,这些事务将被保存在数据库中,然后调用回调 url 将一些数据发送到另一台服务器。您将如何最好地设计解决此问题的方案。我的困惑是是否应该使用 gen_server 或 gen_fsm ,如果是,解决方案的哪个组件去哪里,即如果 gen_server 什么任务去服务器哪个任务去客户端。
erlang - 如何禁用 gen_server 的故障转储
有一个 gen_server 可以在其状态下保留一些敏感信息(密码等)
延迟启用,
因此,如果发生崩溃,gen_server 的状态将转储到崩溃日志中,例如:
结果,明智的信息被写入日志文件。
有什么方法可以防止将 gen_server 的状态写入日志文件/崩溃转储中?
macos - Erlang gen_server eaddrnotavail 后 16358 gen_tcp:connect 调用
我正在用 Erlang 编写服务器,并想打开大量连接。问题是我在 16358 次调用后收到{error, eaddrnotavail}gen_tcp:connect/3
。正如您在下面看到的,服务器非常简单。
我修改了我的 MacOS Yosemite 限制;ulimit -n
输出为 6553600。
我开始:
服务器:
客户端: