OTP - это набор полезных промежуточных программ, библиотек и инструментов, написанных на Erlang. Это неотъемлемая часть дистрибутива Erlang с открытым исходным кодом. (Для одноразовых паролей используйте [tag: одноразовый пароль])
4 ответа

Erlang, как загружать приложения с их зависимостями

У меня есть несколько приложений в моем кластере, мне нужно запускать некоторые из них иногда на разных хостах. Дело в том, что кластер Erlang уже запущен, поэтому, хотя у меня есть файл ресурсов.app для каждого приложения, в котором указано, какие …
08 май '12 в 16:41
1 ответ

В erlang/OTP как запустить appmon для мониторинга существующего узла?

У меня запущено приложение erlang, запущенное с помощью этой командной строки erl -boot start_sasl -config config/cfg_qa -detached -name peasy -cookie peasy -pa ./ebin -pa ./ebin/mochiweb -s peasy start Если я запускаю новый узел и запускаю appmon:s…
24 июл '09 в 18:38
3 ответа

Могу ли я вызвать функции клиента GenServer с удаленного узла?

У меня есть GenServer на удаленном узле с функциями реализации и клиента в модуле. Могу ли я использовать функции клиента GenServer удаленно? С помощью GenServer.call({RemoteProcessName, :"app@remoteNode"}, :get) работает, я ожидаю, но это громоздко…
22 авг '18 в 15:56
1 ответ

Erlang смешивая синхронизирующие и асинхронные функции

Можно ли заблокировать синхронную функцию (handle_call) для ожидания асинхронного вызова (handle_cast) в другом модуле? т.е. как я могу заставить синхронную функцию ждать (т.е. блокировать), пока не будет получено конкретное сообщение "сделано" от а…
15 ноя '13 в 14:55
3 ответа

Erlang OTP дизайн приложения

Я немного пытаюсь разобраться с моделью разработки OTP, когда я конвертирую некоторый код в приложение OTP. По сути, я делаю веб-сканер, и я просто не знаю, где разместить код, который выполняет реальную работу. У меня есть руководитель, который нач…
11 мар '11 в 22:02
1 ответ

Почему этот дочерний процесс не запускается, когда я запускаю его родительский процесс?

Предположим, у меня есть следующая настройка дерева супервизора с одним родителем, начинающим ребенка, и ребенком, начинающим его внука: defmodule NestedSupervisorTree do # this will be the top line supervisor use Supervisor def start_link, do: Supe…
27 апр '17 в 15:55
1 ответ

Gproc: каждый процесс просто возвращает свой pid при выполнении lookup_pids

Я попытался зарегистрировать некоторые процессы с семейным именем с помощью gproc. По этой причине я создал gen_server, который содержит две функции: первая - для обработки регистрации, а вторая - для поиска PID зарегистрированных процессов. После э…
29 янв '17 в 22:02
2 ответа

Erlang процессы супервизора

Я интенсивно изучал Эрланг, и после окончания "Программирования Эрланга" от Джо Армстронга есть одна вещь, к которой я продолжаю возвращаться. По моему мнению, супервизор порождает один процесс на каждого дочернего обработчика. Таким образом, каждый…
04 окт '14 в 05:23
2 ответа

Какой смысл иметь временных детей для руководителей Erlang?

Супервизоры предназначены для перезапуска процессов, которые не работают. Временные процессы - это те, которые никогда не следует перезапускать. Итак, зачем беспокоиться о том, чтобы этот тип ребенка был у руководителя? Это в основном так, что они …
29 мар '15 в 06:01
2 ответа

Запуск нескольких экземпляров одного и того же обработчика событий в Elixir

У меня есть простой обработчик событий в эликсире, используя GenEvent: defmodule myHandler do use GenEvent #Callback def handle_event {:message, x}, state do IO.puts("Message value is #{x}") {:ok, [x|state]} end end Я могу запустить одного обработчи…
18 дек '15 в 14:06
1 ответ

Как добавить плагин в CouchDB

Мне нужно установить плагин для CouchDB. Проблема в том, что единственная папка, к которой я могу получить доступ на сервере, это домашний каталог пользователя. После того, как я установил переменную ERL_LIBS env, я могу вызвать мой модуль плагина и…
22 янв '15 в 08:25
1 ответ

Завершение процесса Erlang: где / когда это происходит?

Рассмотрим процессы, все связанные в дереве, либо формальное дерево надзора, либо некоторую специальную структуру. Теперь рассмотрим какого-нибудь ребенка или работника в этом дереве, с родителем или супервайзером над ним. У меня два вопроса. Мы хот…
10 дек '14 в 15:42
3 ответа

Как сгенерировать ограниченный по времени ключ или пароль без сохранения данных

Вот мой сценарий... Пользовательское клиентское приложение делает запрос к веб-сервису на доступ. Webservice отвечает "ключом", который действителен только в течение X секунд / минут (время может быть переменным или, по крайней мере, определяемым в …
03 апр '11 в 00:41
1 ответ

Есть ли способ получить доступ к состоянию GenServer?

Есть ли встроенный способ увидеть текущее состояние GenServer? Вы всегда можете реализовать простой вызов для возврата состояния, но есть ли более общий способ? Когда я запускаю: наблюдатель.старт, я могу посмотреть на запущенные приложения и увидет…
09 мар '18 в 13:36
2 ответа

Существует ли ограничение на максимальное количество узлов ejabberd в кластере?

Какое максимальное количество узлов может быть в одном кластере в ejabberd? Есть ли ограничение на это.
20 ноя '15 в 09:26
1 ответ

Как вписать не событийные процессы в дерево контроля?

Я хочу иметь возможность порождать множество процессов, которые обрабатывают данные и помещают их в дерево контроля. Однако все поведения по умолчанию, а именно gen_server, gen_fsm и gen_event, управляются событиями. Они должны получать сообщения, ч…
11 июн '13 в 04:54
0 ответов

Как указать количество ядер, на которых будет работать erlang

Я хотел запустить erlang, изменяя количество ядер, чтобы проверить масштабируемость моей программы. Я ожидаю, что запуск программы на большем количестве ядер должен быть быстрее, чем на меньшем. Как я могу указать основные ограничения? На самом деле…
04 окт '16 в 17:14
1 ответ

Сделать вызов gen_server через Jinterface?

Как мне сделать звонок, как это: order_cat(Pid, Name, Color, Desc) -> gen_server:call(Pid, {order, Name, Color, Desc}). что-то вроде этого: handle_call({order, Name, Color, Desc}, _From, Cats) -> if Cats =:= [] -> {reply, make_cat(Name, Col…
25 апр '14 в 11:24
2 ответа

Как определить RestartStrategy с динамическим наблюдением

Если запустить дочернюю спецификацию статически: init(...) -> {ok, {{RestartStrategy, MaxR, MaxT}, [ChildSpec, ...]}}. Но если я запускаю дочернюю спецификацию динамически: start_child(SupRef, ChildSpec) -> startchild_ret() Как определить Rest…
03 апр '13 в 04:16
1 ответ

Какое поведение OTP я должен использовать для такого модуля?

У меня есть простой модуль erlang, и я хочу переписать его на основе принципов OTP. Но я не могу определить, какой шаблон выбрать мне. Код модуля: -module(main). -export([start/0, loop/0]). start() -> Mypid = spawn(main, loop, []), register( main…
05 июн '12 в 02:42