У меня есть приложение Erlang, где у меня есть simple_one_for_one
супервизор, который контролирует набор процессов, которые следят за изменениями на веб-страницах (по одному URL на каждого ребенка).
Я запускаю дочерние элементы, которые должны быть активными в функции start
поведения моего приложения после добавления соответствующего супервизора к верхнему супервизору приложения (вместе с некоторыми другими процессами). Затем дочерние элементы запускаются и останавливаются динамически, когда записи добавляются / удаляются (и записи сохраняются в БД).
Если этот simple_one_for_one
супервизор вылетает из-за слишком большого числа его дочерних элементов sh (например, из-за к проблеме сети), сам супервизор перезапускается, но его дочерние элементы теряются. На этом этапе я хочу проверить базу данных и запустить дочерние элементы, которые должны снова быть активными.
Но как мне перезапустить дочерние элементы? Как я могу сказать, что супервизор перезапустился? Должен ли я планировать запуск детей из собственной функции супервайзера start_link
? Есть ли лучший способ создать это?