问题标签 [erlang-supervisor]
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 - Erlang 生成一个带参数的主管
我有一个这样创建的服务器:
gateway.erl(主管的主管)-> gateway_sup.erl(gen_servers 的主管)-> gateway_serv.erl(处理每个客户端的地方)。
正如我在互联网上看到的那样,这是非常基本的,大多数人都是这样做的。
监听套接字是在 gateway_sup.erl 上创建的,我想监听多个套接字以防某些客户端端口限制。
所以这是我到目前为止的代码。
网关.erl
gateway_sup.erl
gateway_sup.erl 上的 start_link() 函数永远不会被调用。如果网关是 one_for_one 并且我没有尝试传递参数,那么一切正常,但我只监听一个硬编码端口。
我不明白为什么它不会调用 gateway_sup:start_link/1 ?
erlang - Erlang Supervisor 无法 start_child 且没有错误 simple_one_for_one
主管似乎无法默默地启动孩子......
这里是监督
和gen_server
gen_server 的 start_link/1 显然从未被调用(使用 io:fwrite 检查)。
似乎无法找出原因...
erlang - Erlang:为什么 -behaviour(supervisor) 给我“未定义的回调函数”错误?
当我尝试编译这样开始的 OTP 主管模块时:
我收到以下错误:
gridz_sup.erl:9:警告:未定义的回调函数 init/1(行为“主管”)。
哪位好心人能指出我的错误方式吗?
非常感谢,
LRP
erlang - Erlang: supervisor:start_child/2 错误让我很困惑
我正在对 Logan/Merritt/Carlson 的简单缓存、第 6 章、第 149-169 页、Erlang 和 OTP in Action 进行轻微修改。到目前为止,没有代码更改,只是重命名模块。
我启动应用程序:
我插入一个项目:
我收到此错误:
这是代码:
我看第 15 行:
我预计会出现错误,因为这是一个新项目。gridz:edit 是一个 gen_server(Logan 等人中的 sc_element。)这是 create/1 的代码:
这是 gridz_sup:start_child/2 的代码:
如果我直接执行 supervisor:start_child/2 ,这就是我得到的:
gridz_edit 中的第 51 行是一个 init 函数:
如果我直接执行它,它可以工作:
所以现在我很困惑。我错过了什么?为什么 supervisor:start_child/2 会抛出错误?
谢谢,
LRP
process - 动态主管以子主管开始
我需要一个可以培养两种孩子的主管。
第一个是主管孩子,和主管一样,我可以用和主管一样的模块开始一个孩子吗?
例如:
在主管模块中,我用相同的模块初始化了一个孩子,这可能吗?
第二种孩子是普通工人,有自己的模块,这不是问题。但是我可以在主管模块中动态启动这两种不同的类型吗?
erlang - OTP: how to supervise non-OTP components?
I am building an Erlang/OTP system which consists of a MochiWeb web server, some custom Erlang/OTP applications and a few non-native components, which are the following:
- a CouchDB database to store both the state of the MochiWeb web server and the persistent data (users, accounts, etc.)
- a legacy PostgreSQL database to store some other entities (orders, accounts, etc; client's requrement: can not be migrated to CouchDB, the data should be used as is);
- an Asterisk server to provide phone notifications to the users of the system.
I would like to achieve a high level of uptime and availability and thus I would like to know what is the best way to monitor those non-Erlang/OTP elements of the system. Basically, I would like to have each element of the system to be supervised, monitored and restarted if needed. It is easy achieveable for Erlang/OTP applications, but I don't know how to do that with non-Erlang components.
Should I wrap them as Erlang/OTP applications and include into the OTP supervision tree?
Or should I use some third-party software tools to monitor and supervise those non-Erlang/OTP components of the Erlang/OTP system?
What is the best known practice to do that?
erlang - Erlang 监督与应用
我有许多可以独立作为单独应用程序的受监督组件。但我想将它们级联起来,以便一个组件中的工作人员中的调用或事件以倒置的树状结构开始下一个组件。
1) 我可以将这些组件中的每一个打包为单独的应用程序吗?2)如果是这样,我该如何编写调用代码来启动子应用程序?3)或者我是否需要完全做其他事情,如果需要,怎么办?
注意:我仍在努力掌握监督树。application:start(Mod) 之后的一连串事件仍然没有在我的脑海中燃烧。
非常感谢,
LRP
erlang - Erlang:我应该保持开放和监督吗?
我正在将数据移入和移出 dets,并且我有一个选择:我可以:
1)在访问它之前立即打开dets并在之后立即关闭它,或者
2) 将 dets 链接到在发生崩溃时重新打开它的主管;例如,通过带有主管的 gen-server 访问 dets,例如:
哪个最好?或者还有更好的选择吗?
非常感谢,
LRP
erlang - 主管:start_child vs rest_for_one
如果主管使用rest_for_one
重新启动策略,并且使用 向其中添加了一个孩子supervisor:start_child
,那么新的孩子被认为是现有孩子“之前”还是“之后”?
或者换句话说,如果现有的孩子是A
,新的孩子是B
,死了会B
死A
,还是死了会A
死B
?我认为是前者,但文档没有明确说明。
erlang - 如何在主管下运行 Erlang 应用程序
在主管下运行 Erlang 应用程序是什么意思?如果有任何示例如何制作它,请您展示一下。