9

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

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

4

1 回答 1

6

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

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

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

于 2012-10-10T15:04:52.553 回答