5秒后如何在Erlang / Elixir中自定义重启策略?

时间:2018-11-03 16:15:47

标签: erlang elixir

在Erlang / Elixir中,当子代崩溃时,它可以重新启动子代。
我有一个拥有数据库连接的gen_server。
如果无法建立连接,我希望崩溃该进程,并在5秒钟后重新启动它(或更复杂的常规,例如第一次重新启动为100ms,第二次为500ms,第三次为1s ...)。

如何配置主管以处理重启时间?
默认情况下,gen_server将尝试无限重启。

1 个答案:

答案 0 :(得分:0)

您将需要在自己的代码中处理该逻辑(称为“指数退避”),因为Supervisor只是在处理监视和重新启动子级。

您可以在https://hex.pm(搜索exponential backoff)上找到一些有助于实现此目的的软件包

还要检查您的数据库客户端/库,其中大多数都是开箱即用的-至少像大多数ecto客户端,mongodb等一样,使用db_connection库的任何内容都可以。

因此,您应该能够简单地为数据库客户端调整配置,并且一切正常。