7
私はone_for_oneリスタート戦略を持つスーパーバイザを持っています。 子プロセスの再起動の間隔を設定することはできますか?Erlangスーパーバイザリスタート間隔
F.e.リモートDBが壊れていると私は復元の接続の試みの間に10秒待つしたいと思います。
私はone_for_oneリスタート戦略を持つスーパーバイザを持っています。 子プロセスの再起動の間隔を設定することはできますか?Erlangスーパーバイザリスタート間隔
F.e.リモートDBが壊れていると私は復元の接続の試みの間に10秒待つしたいと思います。
実は、あなたは上司が、すぐにその子を再起動し、遅延初期化と呼ばれるものを実装してみましょうことができます:
このようにして、DBが適切に初期化された後、gen_serverへのすべての要求が処理されるようにします。
ありがとうございますが、私はgen_server initに問題はありません。再起動の試行間に時間間隔(スリープ)が必要です。 – kolchanov
@ロベルト・アロイは何がうまくいくと思いますか? gen_serverのinitは再接続を試みません。代わりに、子が起動したスーパーバイザを満たす0のタイムアウトを返します。次に、handle_info関数で、 "本物の"初期化を行います。10秒間スリープした後 – Jr0
DBが生存していることを確認した後、さらにうまくいきます。一定量の時間を待つことは、すべての悪の根です。 –