重启频率:simple_one_for_one worker
restart frequency for :simple_one_for_one worker
动态创建woker时如何设置重启频率?在当前设置中,worker 会无限重启。
我也试过设置 :max_restarts, 在 worker spec(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
max_restarts: 3, max_seconds: 5
需要添加到 init/1
末尾的 supervise/2
调用中,而不是子列表中调用的 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
重启策略、最大重启次数和最大秒数适用于列表中的所有子项。
有关详细信息,请参阅 the Supervisor.Spec.supervise/2 documentation。
动态创建woker时如何设置重启频率?在当前设置中,worker 会无限重启。
我也试过设置 :max_restarts, 在 worker spec(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
max_restarts: 3, max_seconds: 5
需要添加到 init/1
末尾的 supervise/2
调用中,而不是子列表中调用的 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
重启策略、最大重启次数和最大秒数适用于列表中的所有子项。
有关详细信息,请参阅 the Supervisor.Spec.supervise/2 documentation。