【发布时间】:2019-04-23 18:06:08
【问题描述】:
我想在我的 Phoenix 应用程序中注册 2 个 root 主管,有什么理由不这样做吗?
示例如下
defmodule MyApp.Application do
use Application
import Supervisor.Spec
def start(_type, _args) do
children_sv1 = [
supervisor(MyApp.Repo, []),
... # other workers
]
children_sv2 = [
supervisor(MyApp.Endpoint, []),
... # other workers
]
opts1 = [strategy: :one_for_one, name: MyApp.Supervisor1]
opts2 = [strategy: :one_for_one, name: MyApp.Supervisor2]
Supervisor.start_link(children_sv1, opts)
Supervisor.start_link(children_sv2, opts)
end
end
【问题讨论】:
-
没有理由不这样做,尽管在这种情况下只会引用第二个,因为它将作为
start/2调用的结果返回。有一个小的example here,您可以将主管放入单独的文件并从这里调用它们。