我有一个带有两个工作进程的主管:一个处理与远程服务器的连接的 TCP 客户端和一个处理连接协议(protocol)的 FSM。
在子进程中处理 TCP 错误会使代码变得非常复杂。所以我更喜欢“让它崩溃”,但这有一个不同的问题:当服务器无法访问时,将很快达到最大重启次数,并且主管将与我的整个应用程序一起崩溃,这对于我来说是非常不可取的这个案例。
我想要的是有一个带回退的重启策略;否则,如果主管知道何时因崩溃而重新启动就足够了(即,它是否作为参数传递给 init
函数)。我找到了 this mailing list thread ,但是有没有更官方/更好测试的解决方案?
最佳答案
您可能会找到我们的 supervisor cushion成为一个很好的起点。我使用它来减慢必须运行的东西的重启速度,但在启动时会很快失败(例如遇到资源问题的端口)。
关于erlang - 带退避的主管,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3785738/