Size: a a a

2019 April 06

YC

Yury Chernov in pro.elixir
Aleksandr Kuzmenko
Проверь, что у тебя аргумент id отличается для start_child
так я же DynamicSupervisor юзаю
источник

AK

Aleksandr Kuzmenko in pro.elixir
Yury Chernov
так я же DynamicSupervisor юзаю
Ошибка подказывает, что это не играет роли. Процессы нужно как-то идентифицировать для возможности получить child процесс из супервизора. id для этого как раз подходит.
источник

YC

Yury Chernov in pro.elixir
Aleksandr Kuzmenko
Ошибка подказывает, что это не играет роли. Процессы нужно как-то идентифицировать для возможности получить child процесс из супервизора. id для этого как раз подходит.
children = [
     %{id: :one, start: {Browser, :start_link, [[:hello]]}},
     %{id: :two, start: {Browser, :start_link, [[:hello]]}},
   ]

   {:ok, pid} = Supervisor.start_link(children, strategy: :one_for_one)


info] terminating: #PID<0.642.0>: :shutdown
** (EXIT from #PID<0.499.0>) shell process exited with reason: shutdown: failed to start child: :two
   ** (EXIT) already started: #PID<0.642.0>
источник

AK

Aleksandr Kuzmenko in pro.elixir
Yury Chernov
children = [
     %{id: :one, start: {Browser, :start_link, [[:hello]]}},
     %{id: :two, start: {Browser, :start_link, [[:hello]]}},
   ]

   {:ok, pid} = Supervisor.start_link(children, strategy: :one_for_one)


info] terminating: #PID<0.642.0>: :shutdown
** (EXIT from #PID<0.499.0>) shell process exited with reason: shutdown: failed to start child: :two
   ** (EXIT) already started: #PID<0.642.0>
Ваш супервизор - это единственное что стартует в приложении в самом начале? Можете показать application.ex
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Yury Chernov
children = [
     %{id: :one, start: {Browser, :start_link, [[:hello]]}},
     %{id: :two, start: {Browser, :start_link, [[:hello]]}},
   ]

   {:ok, pid} = Supervisor.start_link(children, strategy: :one_for_one)


info] terminating: #PID<0.642.0>: :shutdown
** (EXIT from #PID<0.499.0>) shell process exited with reason: shutdown: failed to start child: :two
   ** (EXIT) already started: #PID<0.642.0>
Чёт не то
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Там же есть пример в доке
источник

Е

Евгений in pro.elixir
Это вот, отлично работает:
defmodule Foo do
 use GenServer
 def start_link(_), do: GenServer.start_link(Foo, nil)
 def init(_), do: {:ok, nil}
end

Supervisor.start_link(
 [
   %{id: :one, start: {Foo, :start_link, [nil]}},
   %{id: :two, start: {Foo, :start_link, [nil]}}
 ],
 strategy: :one_for_one
)
источник

Е

Евгений in pro.elixir
Правда это не DynamicSupervisor
источник

Е

Евгений in pro.elixir
Походу, что-то не то с GenServer. Может Browser.start_link/1 каким-то чудом возвращает все время один и тот же pid?
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Блин, ребята, вы прикалываетесь?
источник

Е

Евгений in pro.elixir
Не представляю как так можно умудриться, но ничего другого в голову не приходит
источник

Е

Евгений in pro.elixir
Źmićer Rubinštejn
Блин, ребята, вы прикалываетесь?
Ну супервизору вроде можно спеки в листе пихать
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Евгений
Ну супервизору вроде можно спеки в листе пихать
А dynamic supervisor у - нельзя
источник

Е

Евгений in pro.elixir
Źmićer Rubinštejn
А dynamic supervisor у - нельзя
В приведенном коде обычный супервизор
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Но вопрос про dynamic супервизор
источник

Е

Евгений in pro.elixir
Źmićer Rubinštejn
Но вопрос про dynamic супервизор
Изначально нет. Автору зачем-то посоветовали DynamicSupervisor, хотя это не обязательно
источник

Е

Евгений in pro.elixir
DynamicSupervisor нужен, если дети постоянно меняются, а если чайлды все время одни и те же, то и обычный прокатит, нет?
источник

AK

Aleksandr Kuzmenko in pro.elixir
Źmićer Rubinštejn
А dynamic supervisor у - нельзя
Я, если честно, ни разу не применял, но, кажись, что-то из спек ему скормить можно таки.

https://hexdocs.pm/elixir/DynamicSupervisor.html#start_child/2
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Ему можно скормить все, но в start_child
источник

ŹR

Źmićer Rubinštejn in pro.elixir
А не в start_link
источник