Где нужно перезапустить детей `simple_one_for_one`? - PullRequest
1 голос
/ 09 апреля 2020

У меня есть приложение Erlang, где у меня есть simple_one_for_one супервизор, который контролирует набор процессов, которые следят за изменениями на веб-страницах (по одному URL на каждого ребенка).

Я запускаю дочерние элементы, которые должны быть активными в функции start поведения моего приложения после добавления соответствующего супервизора к верхнему супервизору приложения (вместе с некоторыми другими процессами). Затем дочерние элементы запускаются и останавливаются динамически, когда записи добавляются / удаляются (и записи сохраняются в БД).

Если этот simple_one_for_one супервизор вылетает из-за слишком большого числа его дочерних элементов sh (например, из-за к проблеме сети), сам супервизор перезапускается, но его дочерние элементы теряются. На этом этапе я хочу проверить базу данных и запустить дочерние элементы, которые должны снова быть активными.

Но как мне перезапустить дочерние элементы? Как я могу сказать, что супервизор перезапустился? Должен ли я планировать запуск детей из собственной функции супервайзера start_link? Есть ли лучший способ создать это?

...