Описание тега erlang-supervisor

Супервизоры - одна из основных вещей, которые делают Erlang/OTP тем, чем он является. Активное приложение OTP состоит из одного или нескольких процессов, выполняющих работу. Эти процессы косвенно запускаются супервизорами, которые несут ответственность за их контроль и перезапуск при необходимости. Работающее приложение - это, по сути, дерево процессов, как супервизоров, так и рабочих, где корнем дерева является корневой супервизор.
3 ответа

В чем преимущество регистрации имени с помощью {:via, module, term} в GenServer.start_link/3?

В GenServer.start_link/3 Я могу зарегистрировать имя локально, используя атом для такого процесса: defmodule Worker do use GenServer def start_link do GenServer.start_link(__MODULE__, nil, name: :worker) end end Затем я могу запустить супервизора, ч…
1 ответ

Может ли Elixir OTP Supervisor просто "использовать Supervisor" или он должен "использовать Genserver"?

Итак, глядя на примеры, я немного запутался: Документы об эликсире ( http://elixir-lang.org/getting-started/mix-otp/supervisor-and-application.html), по-видимому, позволяют создавать деревья надзора только с помощью макроса "use Supervisor", Но все …
1 ответ

Супервайзер с Quantum Elixir Cron Job

Простите, если я не очень хорошо понимаю эликсир, так как я новичок в этом... Я использую квантовый эликсир в качестве cron api для динамического создания заданий cron. Когда кто-то размещает на маршруте, я сохраняю детали задания cron в моем Ecto R…
1 ответ

Названия стратегий перезапуска OTP кажутся странными. Зачем?

Извините, это не техническая проблема. Названия стратегий перезапуска OTP-супервайзера мне кажутся странными, возможно, потому, что я не являюсь носителем английского языка. Из моего понимания: one_for_one: когда один ребенок умирает, он перезапуска…
01 май '18 в 14:00
2 ответа

Почему мой супервизор терпит неудачу на start_child с помощью undef?

Я пытаюсь запустить simple_one_for_one supervisor где supervisor а также worker размещены в отдельных модулях, и я продолжаю получать следующую ошибку при использовании supervisor:start_child: >A=sup:start_link(). >B=supervisor:start_child(A,[…
19 апр '20 в 22:14
1 ответ

Запуск дочерних процессов elixir для каждого узла с помощью супервизора

Я пытаюсь ввести количество узлов и запустить процессы genserver для каждого из узлов; это каждыйGenServer.start_link(n) (где n - номер узла) запускает отдельный процесс (PID) для каждого процесса. pids = Enum.map(1..totalnodes, fn n -> {:ok, uni…
25 окт '19 в 04:05
1 ответ

Ссылки Erlang собираются мусором?

Я хочу динамически добавлять детей в simple_one_for_oneруководитель. Для этого я думаю о создании дочернего идентификатора, используяmake_ref()и сохраните ссылку на карте. Как только дочерний элемент завершится, ссылка будет удалена с карты. В этом …
14 окт '19 в 22:53
1 ответ

Как передать аргументы командной строки для смешанного запуска --no-halt

Итак, у меня есть модуль приложения, который следует этой схеме: defmodule Project.Application do use Application def start(_type, _args) do children = [ randomchild1, randomchild2, {Project.runapp, "argument" } ] opts = [strategy: :one_for_all, nam…
07 сен '19 в 14:04
2 ответа

Действительно ли поведение Erlang похоже на наследование классов?

В настоящее время я работаю над проектом конвейера данных с использованием Apache Kafka и Erlang в качестве языка потокового процессора (на самом деле у меня нет предыдущего опыта работы с erlang, кроме изучения языка и концепций с начала года). Что…
1 ответ

Почему мой супервизор терпит неудачу при инициализации с помощью badarg?

Пытаюсь завести супервайзера типа one_for_one с одним ребенком, и я получаю эту ошибку: A = pl:start(). {error,{badarg,[{erlang,apply,[{state,[0|1]},init,[[]]],[]}, {supervisor,init,1,[{file,"supervisor.erl"},{line,295}]}, {gen_server,init_it,2,[{fi…
01 мар '20 в 16:33
0 ответов

Erlang - супервизор не перезапускает рабочий процесс

Я играю с супервизорами Erlang OTP и хочу создать простое приложение с супервизором и работником. Я создал простой воркер на основе gen_server, который принимает 2 числа и делит первое на второе. А если второе число - 0, то вылетает с ошибкой. И у м…
20 мар '20 в 06:05
1 ответ

Где перезапускать потомков simple_one_for_one?

У меня есть приложение на Erlang, в котором есть simple_one_for_one супервизор, который контролирует набор процессов, отслеживающих изменения на веб-страницах (по одному URL-адресу на каждого ребенка). Я запускаю детей, которые должны быть активными…
09 апр '20 в 22:51
2 ответа

Почему я не могу запускать команды rebar3 в приложении, созданном с помощью rebar3?

Я пытался создать приложение rebar3, однако столкнулся с проблемой, я создал новое приложение с помощью rebar3, и когда я пытаюсь его скомпилировать, я получаю ошибку как таковую: > ===> Verifying dependencies... > ===> Uncaught error in…
0 ответов

Конфигурация супервизора

Мне нужно добавить в свою конфигурацию еще одну команду, например: [program:node1] command=node app.js``` how can i add another command something like "&&" : ```[program:node1] command=node app.js && service start ....`` an…
0 ответов

Узлы, соединяющиеся в Эликсире

Я создаю чат с помощью Elixir, и я создал функцию под названием connect, чтобы все узлы могли подключаться друг к другу. Как подключить все узлы при запуске супервизора без вызова функции в терминале
01 сен '20 в 23:17
1 ответ

Как динамически изменить логин, пароль, хост базы данных Postgres? Несколько баз данных

У меня в приложении несколько репозиториев Postgres. Использую Ecto. Все работает. Теперь я хочу иметь возможность изменять их данные, такие как логин, пароль, хост, динамически. То есть я бы изменил логин / пароль / имя хоста базы данных через html…
18 ноя '19 в 07:15
1 ответ

Как запустить супервизор с воркерами, которые не являются gen_servers?

Привет, я пытаюсь запустить supervisor чьи работники не gen_server(s). Мой супервизор для краткости определен в том же модуле, что и рабочий: Я продолжаю получать эту ошибку, и я попытался поставить MFA атрибут в [ ] безрезультатно. я также поставил…
05 апр '20 в 22:25
2 ответа

Как добавить файл .app.src в независимый модуль / обработчик (файл .erl)

Я работаю над приложением Erlang. Я хочу скомпилировать и запустить один файл.erl из папки src/, в которой используются переменные среды из файла.app.src. Поэтому мое требование - добавить файл.app.src в обработчик и независимо скомпилировать / запу…
1 ответ

Эликсир - Как убить супервизора, когда связанный процесс убит?

В моем приложении Elixir у меня есть два приложения под названием market_manager а также candle_manager. В приложении candle_manager, У меня есть эта древовидная структура: В приложенииmarket_manager, У меня есть такой: MarketManager.ManagersSupervi…
02 сен '19 в 00:40
1 ответ

Почему дерево супервизии вместо одного централизованного супервизора?

Я изучаю Elixir и Erlang/OTP и хотел бы понять важность наличия дерева надзора при создании высокодоступной системы. Я понимаю важность супервизора в управлении временем жизни рабочих процессов. Но я все же хотел бы знать, почему некоторым приложени…
13 авг '20 в 05:44