重启频率为:simple_one_for_one worker

时间:2016-01-26 20:33:58

标签: elixir otp

如何动态创建字幕时,如何设置重启频率?在当前设置中,工作人员不断重新启动无穷大。

我也尝试在工作规范中设置:max_restarts(worker(Kombiner.Foo,[],max_restarts:3,max_seconds:5)) 它似乎根本没有做任何事情(它将继续为无限重启)。

def start_child(input) do
  Supervisor.start_child(@name, [input])
end


def init(:ok) do
  children = [
    worker(Kombiner.Foo, [], restart: :transient)
  ]
  supervise(children, strategy: :simple_one_for_one)
end

在Kombiner.Foo工作人员中:

def handle_info({any, :timeout}, _state) do
  {:stop, :timeout, nil}
end

1 个答案:

答案 0 :(得分:5)

supervise/2需要添加到init/1末尾的worker/3来电,而不是儿童列表中调用的def init(:ok) do children = [ worker(Kombiner.Foo, [], restart: :transient) ] supervise(children, strategy: :simple_one_for_one, max_restarts: 3, max_seconds: 5) end 函数。您的代码应如下所示:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>

重启策略,max restarts和max seconds与列表中的所有子项相关。

文档:http://elixir-lang.org/docs/stable/elixir/Supervisor.Spec.html#supervise/2