0
我想用一個:臨時重啓策略來監督一個任務,以便只有當它異常退出時纔會重啓。然而,當我測試我的應用程序時,我發現它在重新啓動之前4次重啓,直到主管自行解決問題。我簡化了代碼,甚至將重新啓動改爲:臨時,但即使如此,管理員仍在重新啓動任務。Elixir主管意外重啓一個臨時/臨時工作者
簡單的例子:
defmodule FooSup do
use Supervisor
def start_link() do
IO.puts "starting #{__MODULE__}"
Supervisor.start_link(__MODULE__, {})
end
def init(_)do
children = [worker(Task, [fn -> IO.puts("task running") end])]
supervise(children, strategy: :one_for_one, restart: :temporary)
end
end
當我開始FooSup過程中,我得到以下輸出:
iex(2)> FooSup.start_link()
starting Elixir.FooSup
task running
{:ok, #PID<0.215.0>}
task running
task running
task running
順便說一句,我知道,如果我想動態監督:臨時任務,我可以使用TaskSupervisor,但我希望靜態監督:transient。
已經使用Elixir開啓和關閉幾年,但看不到這裏有什麼問題。
不應該'重新啓動::臨時'是'工人'而不是'監督'的選項?根據:https://hexdocs.pm/elixir/Supervisor.html#module-simple-one-for-one –