单独启动的进程是否会被纳入Supervisor的预设监督策略?
问题解答:动态添加的子进程是否受Supervisor策略管控?
通过Supervisor.start_child(MyApp.Supervisor, SomeOtherWorker)动态添加的进程会被纳入该Supervisor已定义的:rest_for_one监督策略,原因如下:
- Supervisor的监督策略全局作用于其所有子进程,无论子进程是初始化阶段在
init/1中声明的静态子进程,还是后续通过start_child动态添加的子进程。 - 对于
:rest_for_one策略而言,当某个子进程终止时,会重启该进程以及所有在它之后启动的子进程——这里的“启动顺序”包含初始化后动态添加的进程。比如:- 先启动初始化配置里的
Worker - 再动态添加
SomeOtherWorker
若Worker崩溃,:rest_for_one会重启Worker和SomeOtherWorker;若SomeOtherWorker崩溃,只会重启它自身。
- 先启动初始化配置里的
内容的提问来源于stack exchange,提问作者category
相关产品推荐
相关产品推荐

