我正在使用OTP管理程序行为来监督和重新启动子进程.然而,当孩子死亡时,我想以崩溃前的状态重新启动它.
如果我自己编写自定义主管,我可以收到{EXIT,Pid,Reason}消息并对其进行操作.当使用OTP管理程序行为时,它全部由OTP管理,我无法控制它.我实现的唯一回调函数是init.
在这种情况下是否有任何标准方法?如何自定义otp主管动态重启的子状态?如何使用OTP获取终止进程的Pid?或者也许可以在终止之前获得孩子的状态,然后将孩子恢复到崩溃之前的状态?
在不知道你正在做什么的任何细节的情况下,我可以想象一个以下的世界:
因此,如果我有 12 个子进程,代表 12 个 Cobol 部落,每个进程都会使用其名称作为 ETS 表的键,以查找前一个化身在启动时留下的状态。每当其状态发生变化时,每个进程都会更新表(再次使用其名称作为键)。
主管将自动重新启动被杀死的子进程,并且上面的步骤 2 将在子进程的 init 方法中执行。第3步将在子进程的handle_call、handle_cast和handle_info方法中处理(我正在对进程的性质做出一些假设)。主管可以提供多种重启策略,如果需要,甚至可以重启同级进程。
希望这能给你一些想法。
| 归档时间: |
|
| 查看次数: |
1580 次 |
| 最近记录: |