4

システム上の各ユーザーに対して定期的にタスクを実行するSupervisor多くのワーカーを監督する名前があります。simple_one_for_one

アプリが初めて起動したときにユーザーごとに 1 つのワーカーを起動し、後で再起動した場合に、なんらかの理由でSupervisor同じことをアプリに実行させたいと考えています。Supervisor

現時点では、Applicationstart(type, args)コールバックですべての子を動的に開始しますが、Supervisorを再起動すると、すべての子プロセスが開始されるわけではありません。

すべての動的な子ワーカーが、開始/再起動の直後にSupervisorいつでも開始されるようにするにはどうすればよいですか?

(私のアプリは Elixir を使用していますが、Erlang にも同じ原則が適用されます。)

4

1 に答える 1

6

私がこれを行った方法の 1 つは、別のスーパーバイザーと「再起動ワーカー」を使用することです。あなたのスーパーバイザーは新しいものの子です。それは再起動ワーカーの兄弟です。新しいスーパーバイザーはone_for_allorrest_for_oneを使用するため、スーパーバイザーが停止した場合、再起動ワーカー再起動されます。

再起動ワーカーが再起動されると、動的ワーカーを開始できます。

于 2016-04-22T11:34:09.190 に答える