tom*_*lor 4 erlang elixir erlang-otp erlang-supervisor
我有一个命名Supervisor
,监督许多simple_one_for_one
工作人员,他们定期为我的系统上的每个用户执行任务.
我希望应用程序Supervisor
在第一次启动时为每个用户启动一个worker ,并且我希望应用程序Supervisor
在以后重新启动时执行相同操作,无论出于何种原因.
目前,我动态地启动所有的孩子中Application
的start(type, args)
回调,但如果Supervisor
重新启动,不会启动所有的子进程.
如何确保所有动态子工作程序在Supervisor
启动/重新启动后立即启动?
(我的应用程序在Elixir中,但同样的原则适用于Erlang.)
我做到这一点的一种方法非常有效,就是使用另一个主管和一个"重启工作者".你的主管是新主管的孩子 - 它是重启工作者的兄弟.新主管使用one_for_all
或rest_for_one
,如果您的主管死亡,重启工作人员也会重新启动.
重新启动重新启动工作程序时,它可以启动动态工作程序.
归档时间: |
|
查看次数: |
376 次 |
最近记录: |