如何动态创建字幕时,如何设置重启频率?在当前设置中,工作人员不断重新启动无穷大。
我也尝试在工作规范中设置: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
答案 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