erlang管理器重启策略

erlang管理器重启策略,erlang,otp,erlang-supervisor,Erlang,Otp,Erlang Supervisor,我想作为某个主管的子女启动几个流程。重新启动策略是“一对一”根据我的需要,每个终止的进程都应该在给定的时间(例如20秒)后重新启动 如何做到这一点?可能与init或terminate函数中的延迟结合使用: Shutdown = brutal_kill | integer() >=0 | infinity 有没有更好的方法来实现这一点 不要为此使用init/1。当init运行时,主管被阻止。最好立即启动进程,但只允许它在等待20秒后注册自己进行类似的操作。您可以在init中使用一个简单的e

我想作为某个主管的子女启动几个流程。重新启动策略是“一对一”根据我的需要,每个终止的进程都应该在给定的时间(例如20秒)后重新启动

如何做到这一点?可能与init或terminate函数中的延迟结合使用:

Shutdown = brutal_kill | integer() >=0 | infinity

有没有更好的方法来实现这一点

不要为此使用
init/1
。当init运行时,主管被阻止。最好立即启动进程,但只允许它在等待20秒后注册自己进行类似的操作。您可以在init中使用一个简单的
erlang:send\u after(..)
调用来触发此启动延迟


我也不喜欢终止的事情。可能有一种关闭状态,在终止前你会逗留一段时间。这也许可以确保在你跑步时没有其他人跑步。如果你能控制何时关闭,我建议你。只需进入该状态,然后等待上述计时器触发。但是请注意,此解决方案只会在宽限期后释放外部资源(文件、ETS表、套接字),除非显式释放。

不要为此使用
init/1
。当init运行时,主管被阻止。最好立即启动进程,但只允许它在等待20秒后注册自己进行类似的操作。您可以在init中使用一个简单的
erlang:send\u after(..)
调用来触发此启动延迟

我也不喜欢终止的事情。可能有一种关闭状态,在终止前你会逗留一段时间。这也许可以确保在你跑步时没有其他人跑步。如果你能控制何时关闭,我建议你。只需进入该状态,然后等待上述计时器触发。但请注意,除非显式释放,否则此解决方案仅会在宽限期后释放外部资源(文件、ETS表、套接字)