- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当使用 :simple_one_for_one
策略时,我们指定子项动态启动:
supervise([worker(FooServer, [])], strategy: :simple_one_for_one)
然后我们使用类似下面的东西来启动 child :
def start_child(arg1, arg2) do
Supervisor.start_child(__MODULE__, [arg1, arg2])
end
documentation状态(强调我的):
In the case of :simple_one_for_one, the child specification defined in the supervisor will be used and instead of a child_spec, an arbitrary list of terms is expected. The child process will then be started by appending the given list to the existing function arguments in the child specification.
我尝试了以下方法
supervise([worker(FooServer, [:foo])], strategy: :simple_one_for_one)
# ^^^^
# "fixed" argument
但似乎没有附加参数,我找不到如何访问这些固定参数。甚至可以这样做吗?
最佳答案
我在iex中使用了如下代码:
defmodule Child do
def start_link(arg, arg2) do
IO.inspect(arg)
IO.inspect(arg2)
pid = spawn fn() ->
receive do
_any -> arg
end
end
{:ok, pid}
end
end
defmodule Sup do
use Supervisor
def start_link do
Supervisor.start_link(__MODULE__, [], name: __MODULE__)
end
def init(_args) do
children = [
worker(Child, [:arg], restart: :transient)
]
supervise(children, strategy: :simple_one_for_one)
end
def start_child do
Supervisor.start_child(__MODULE__, [:arg2])
end
end
这是我得到的行为:
iex(1)> Supervisor.start_link
{:ok, #PID<xxxxx>}
iex(2)> Supervisor.start_child
:arg
:arg2
{:ok, #PID<0.69.0>}
所以看起来它对我来说工作正常。在无法查看代码的情况下,很难就代码中发生的事情提供建议,但也许您的期望是您的参数是一个参数列表,而实际上您是将每个参数作为单独的参数接收。
关于elixir - 使用 :simple_one_for_one strategy 时的子参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35964064/
我有一个负责启动 simple_one_for_one child 的主管。每个 child 实际上都是一个主管,有自己的树。每个 child 都从一个唯一的 ID 开始,所以我可以区分他们。然后使用
我有一个名为 Supervisor监督很多simple_one_for_one worker ,它们定期为我系统上的每个用户执行任务。 我希望应用程序在 Supervisor 时为每个用户启动一名工作
动态创建 woker 时如何设置重启频率?在当前设置中,worker 不断重启。 我也试过设置 :max_restarts,在 worker spec(worker(Kombiner.Foo, [],
我有一个主管,应开始simple_one_for_one worker 。当我第一次调用start_child()时,一切都变得非常好。但是,当我第二次这样做时,我得到{error,{already_
我有一个主管(叫 alice),负责启动一群 of_one_for_one worker 。现在我想一起获得有关所有作品的一些信息。例如,假设工作人员是 TCP 服务器,我想获取工作人员使用的所有端口
我为一个名为 band_supervisor 的主管定义了 simple_one_for_one 工作规范,子规范 id 为 jam_musician : init([]) -> {ok,
当使用 :simple_one_for_one 策略时,我们指定子项动态启动: supervise([worker(FooServer, [])], strategy: :simple_one_for
我是一名优秀的程序员,十分优秀!