Erlang 主管重新启动间隔



我有一个主管one_for_one重新启动策略。是否可以在子进程重新启动之间设置一些时间间隔?

例如,远程数据库被压碎,我想在恢复连接尝试之间等待 10 秒。

实际上,您可以让主管立即重新启动其子级并实现所谓的延迟初始化

  1. 主管(立即)启动孩子(例如,gen_server)
  2. gen_server在其 init 函数中返回 0 超时
  3. 在handle_info,您执行活动等待(10 秒)以确保数据库已正确初始化

这样,您可以确保在正确初始化数据库后处理对gen_server的所有请求。

你不能用标准的supervisor行为做到这一点,你需要实现你自己的sup作为一个gen_server,它捕获其他人的退出而不是它的parent并手动重新启动他们的子项,但每次在重新启动子项之前,它还通过设置timeout来检查 10 秒是否已过期

最新更新