9

one_for_one再起動戦略を持つスーパーバイザーがいます。子プロセスの再起動の間に時間間隔を設定することは可能ですか?

たとえば、リモート データベースがクラッシュしたため、接続を復元するまで 10 秒待ちたいとします。

4

1 に答える 1

6

実際には、スーパバイザにすぐに子を再起動させ、遅延初期化と呼ばれるものを実装させることができます:

  1. スーパーバイザーは、(すぐに) 子 (gen_server など) を (再) 起動します。
  2. gen_server が init 関数で 0 タイムアウトを返す
  3. handle_info では、DB が適切に初期化されるようにアクティブな待機 (10 秒) を行います。

このようにして、DB が適切に初期化された後に、gen_server へのすべての要求が確実に処理されるようにします。

于 2012-10-10T15:04:52.553 に答える