erlang - 带退避的主管

标签 erlang erlang-otp

我有一个带有两个工作进程的主管:一个处理与远程服务器的连接的 TCP 客户端和一个处理连接协议(protocol)的 FSM。

在子进程中处理 TCP 错误会使代码变得非常复杂。所以我更喜欢“让它崩溃”,但这有一个不同的问题:当服务器无法访问时,将很快达到最大重启次数,并且主管将与我的整个应用程序一起崩溃,这对于我来说是非常不可取的这个案例。

我想要的是有一个带回退的重启策略;否则,如果主管知道何时因崩溃而重新启动就足够了(即,它是否作为参数传递给 init 函数)。我找到了 this mailing list thread ,但是有没有更官方/更好测试的解决方案?

最佳答案

您可能会找到我们的 supervisor cushion成为一个很好的起点。我使用它来减慢必须运行的东西的重启速度,但在启动时会很快失败(例如遇到资源问题的端口)。

关于erlang - 带退避的主管,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3785738/

相关文章:

ajax - 浏览器不重定向

erlang - Elixir-Erlang : is there a "reasonable" limit of children handled by a supervisor?

erlang - 将 map 转换为erlang中的列表的函数

erlang - RabbitMQ 插件依赖

erlang - 在try catch block 中没有尾部递归代码?

erlang - 如何将远程pid转换为节点名称?

erlang - Erlang/OTP 应用程序是如何打包的?

process - 如何从 Erlang 中生成的进程获取返回值?

java - 通过 Jinterface 调用 gen_server?

erlang - 是否有可能在 error_logger 处理程序中获取错误的堆栈跟踪?