gpt4 book ai didi

elixir - :simple_one_for_one worker 的重启频率

转载 作者:行者123 更新时间:2023-12-04 08:06:14 24 4
gpt4 key购买 nike

动态创建 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 worker 内部:

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

重启策略、最大重启次数和最大秒数适用于列表中的所有 child 。

有关详细信息,请参阅 the Supervisor.Spec.supervise/2 documentation .

关于elixir - :simple_one_for_one worker 的重启频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35023418/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com