Супервизоры:
Здесь есть хитрость, которая включает использование двух супервизоров.Ваше дерево выглядит так:
main_sup -> worker
main_sup -> attached_pool_sup
attached_pool_sup -> workers
main sup равно one_for_all
, поэтому, если работник или руководитель пула умирает, то дерево готово и уничтожено.Супервизор пула - это simple_one_for_one
, который подходит для сотен или тысяч работников.
Init:
Не выполняйте слишком много работы в обратном вызове init.Супервизор будет ждать, пока инициализация не завершится, и вы можете установить тайм-аут (который вы можете увеличить в вашем случае), если он длится дольше, чем обычно.
Хитрость заключается в том, чтобы быстро истечь (время ожидания равно 0init), а затем обработать дополнительную настройку в обратном вызове handle_info
.Таким образом, вы не остановите главного наблюдателя.Остерегайтесь гонок здесь!