在Erlang / Elixir中,当子代崩溃时,它可以重新启动子代。
我有一个拥有数据库连接的gen_server。
如果无法建立连接,我希望崩溃该进程,并在5秒钟后重新启动它(或更复杂的常规,例如第一次重新启动为100ms,第二次为500ms,第三次为1s ...)。
如何配置主管以处理重启时间?
默认情况下,gen_server将尝试无限重启。
答案 0 :(得分:0)
您将需要在自己的代码中处理该逻辑(称为“指数退避”),因为Supervisor
只是在处理监视和重新启动子级。
您可以在https://hex.pm(搜索exponential backoff
)上找到一些有助于实现此目的的软件包
还要检查您的数据库客户端/库,其中大多数都是开箱即用的-至少像大多数ecto客户端,mongodb等一样,使用db_connection
库的任何内容都可以。
因此,您应该能够简单地为数据库客户端调整配置,并且一切正常。