erlang管理员重启策略
我想开始几个过程作为给定主管的孩子。 重启策略是one_for_one
对于我的需求,每一个终止的进程应该在给定的时间量(例如20秒)之后重新启动。
如何才能做到这一点? 也许延迟init或终止函数结合使用:
Shutdown = brutal_kill | integer() >=0 | infinity
有没有更好的方法来实现这一目标?
不要为此使用init/1
。 当init运行时,主管被阻塞。 最好立即启动这个过程,但是只有等待20秒后才让它自己注册。 您可以在init中使用简单的erlang:send_after(..)
调用来触发此启动延迟。
我也不喜欢终止的事情。 也许有一个关闭状态,在终止之前,你会停留一段时间。 这也许可以确保没有别人跑你在做什么。 如果你正在控制何时关闭,我会建议你。 只需进入该状态,然后等待上述的定时器触发。 但请注意,此解决方案仅在宽限期后释放外部资源(文件,ETS表,套接字) - 除非明确释放。
链接地址: http://www.djcxy.com/p/6505.html