Size: a a a

2021 March 19

A

Andre in pro.elixir
Какой-то нужен посредник между процессами
источник

A

Andre in pro.elixir
Многие ко многим плохая связь
источник

AB

Alex Bubnov in pro.elixir
Aleksey @cheatex
А как можно процессам запущенным в одном супервизоре обменяться своими pid?

Например создаю сервер с сокетом и динамический супервайзор рядом с ним. Сервер после приёма соединения создаёт процесс для его обработки и передаёт динамику для управления. Как получить в сервере pid динамика?

Думал про имена. Получается их надо как-то генерировать, например по номеру порта, ощущение кривизны и хрупкости конструкции.
по большому счету никак, кроме регистрации имен
источник

AB

Alex Bubnov in pro.elixir
очень хочется что-то работающее без регистратора и без глобальных имен, но на стандартных супервизорах не получается вообще.
источник

LL

Lama Lover in pro.elixir
Alex Bubnov
очень хочется что-то работающее без регистратора и без глобальных имен, но на стандартных супервизорах не получается вообще.
Так а если имена через супервизора — это опасно, потому что на супервизор будет много лишних сообщений приходить, и процессы под супервизорами смогут долго висеть мёртвыми
Особенно когда они умирают от нагрузки, супервизор будет очень долго их запускать
источник

LL

Lama Lover in pro.elixir
Так что Registry тут вообще лучший вариант. Лучше чем Registry для этого нет ничего
источник

AB

Alex Bubnov in pro.elixir
Lama Lover
Так а если имена через супервизора — это опасно, потому что на супервизор будет много лишних сообщений приходить, и процессы под супервизорами смогут долго висеть мёртвыми
Особенно когда они умирают от нагрузки, супервизор будет очень долго их запускать
да понятно, что в супервизоры никто не ходит резолвить имена.
источник

AB

Alex Bubnov in pro.elixir
но хочется-то вообще без имен
источник

LL

Lama Lover in pro.elixir
Alex Bubnov
но хочется-то вообще без имен
Так можно вообще без имён
источник

LL

Lama Lover in pro.elixir
Работай с pid-ами
Только это будут жуткие спагетти, которые хрен отдебажишь
источник

AB

Alex Bubnov in pro.elixir
так не выходит же. ты не можешь на старте процесса получить пид предыдущего, например.
источник

AB

Alex Bubnov in pro.elixir
в смысле, без внешней сущности - регистратора
источник

LL

Lama Lover in pro.elixir
Alex Bubnov
так не выходит же. ты не можешь на старте процесса получить пид предыдущего, например.
Что значит "пид предыдущего"?
источник

AB

Alex Bubnov in pro.elixir
Lama Lover
Что значит "пид предыдущего"?
месячной давности полтора дня флуда в ErlangRus

Alex Bubnov, [01.02.21 23:12]
слушайте, а напомните, у нас из коробки супервизоры вообще никак не позволяют вайрить чайлдов между собой?
типа, чтобы не городить огород в банальном кейсе "передать pid simple-one-for-one супервизора запускающемуся сразу после менеджеру этих тасок".
источник

AB

Alex Bubnov in pro.elixir
про di, который хочется, и которого нет
источник

AB

Alex Bubnov in pro.elixir
и который кто-то считает нинужным
источник

LL

Lama Lover in pro.elixir
Alex Bubnov
месячной давности полтора дня флуда в ErlangRus

Alex Bubnov, [01.02.21 23:12]
слушайте, а напомните, у нас из коробки супервизоры вообще никак не позволяют вайрить чайлдов между собой?
типа, чтобы не городить огород в банальном кейсе "передать pid simple-one-for-one супервизора запускающемуся сразу после менеджеру этих тасок".
Не понял, поясни

Типа запускается супервизор и нужно получить его пид?
источник

AB

Alex Bubnov in pro.elixir
Lama Lover
Не понял, поясни

Типа запускается супервизор и нужно получить его пид?
ну смотри, абсолютно стандартный юзкейс.
есть simple-one-for-one супервизор для таск, есть менеджер, который эти таски запускает.
менеджеру нужен пид супервизора, чтобы запускать в него чайлдов.
кажется логичным, что оба они должны висеть под одним топлевел супервизором.
как на старте менеджера запихать в него пид sofo-супервизора?
источник

AB

Alex Bubnov in pro.elixir
Lama Lover
Не понял, поясни

Типа запускается супервизор и нужно получить его пид?
а, ты ж сейчас на кложе - посмотри, как integrant выглядит. на максималках хочется что-то того же типа
источник

LL

Lama Lover in pro.elixir
Alex Bubnov
ну смотри, абсолютно стандартный юзкейс.
есть simple-one-for-one супервизор для таск, есть менеджер, который эти таски запускает.
менеджеру нужен пид супервизора, чтобы запускать в него чайлдов.
кажется логичным, что оба они должны висеть под одним топлевел супервизором.
как на старте менеджера запихать в него пид sofo-супервизора?
Топ-супервизор запускает только менеджера
Потом менеджер запускает sofo под топ-суперзором и в инициализации передаёт свой пид
sofo делает call(manager, self())
Профит
источник