在主管启动后启动动态 simple_one_for_one 工人
Starting dynamic simple_one_for_one workers after supervisor starts
我有一个名为 Supervisor
的监督许多 simple_one_for_one
工作人员,他们定期为我系统上的每个用户执行任务。
我希望应用程序在 Supervisor
第一次启动时为每个用户启动一个工作程序,并且我希望应用程序在 Supervisor
稍后重新启动时执行相同的操作,无论出于何种原因。
目前我在 Application
的 start(type, args)
回调中动态启动所有子进程,但如果 Supervisor
重新启动,则不会启动所有子进程.
如何确保在 Supervisor
starts/restart 之后随时启动所有动态子工作程序?
(我的应用程序在 Elixir 中,但同样的原则适用于 Erlang。)
我完成此工作的一种方法非常有效,是使用另一位主管和 "restart worker"。您的主管是新主管的 child -- 它是重启工人的兄弟姐妹。新主管使用 one_for_all
或 rest_for_one
,这样如果您的主管死了,重启的工作人员也会 也 重新启动。
restart worker重启时,可以启动动态worker。
我有一个名为 Supervisor
的监督许多 simple_one_for_one
工作人员,他们定期为我系统上的每个用户执行任务。
我希望应用程序在 Supervisor
第一次启动时为每个用户启动一个工作程序,并且我希望应用程序在 Supervisor
稍后重新启动时执行相同的操作,无论出于何种原因。
目前我在 Application
的 start(type, args)
回调中动态启动所有子进程,但如果 Supervisor
重新启动,则不会启动所有子进程.
如何确保在 Supervisor
starts/restart 之后随时启动所有动态子工作程序?
(我的应用程序在 Elixir 中,但同样的原则适用于 Erlang。)
我完成此工作的一种方法非常有效,是使用另一位主管和 "restart worker"。您的主管是新主管的 child -- 它是重启工人的兄弟姐妹。新主管使用 one_for_all
或 rest_for_one
,这样如果您的主管死了,重启的工作人员也会 也 重新启动。
restart worker重启时,可以启动动态worker。