Описание тега gen-server

NoneGen_server означает "общий сервер", поведение модуля в Erlang.
3 ответа

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

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

Сохранение большой карты в GenServer, это допустимый вариант использования?

Может ли это быть допустимым использованием GenServer: Если process_id является user_id и он уникален. Процесс содержит результат запроса большой карты данных, которая генерируется через БД. Теперь, если сотни пользователей вошли в систему и запроси…
16 ноя '17 в 11:00
1 ответ

Elixir Genserver получает доступ к своим собственным структурным данным

У меня есть модуль Generver эликсир, который инициализируется с defstruct Но я не могу понять, как получить доступ к данным из этого строгого в своих собственных частных модулях. Вот структура, с которой он инициализируется: defstruct info: "test_da…
25 май '17 в 19:13
1 ответ

Как использовать Task.await с GenServer?

Я пытаюсь выяснить, как запустить genserver и дождаться результата, пока он не закончится. Как заставить сервер вернуть результат при выходе? как например: defmodule DistanceMatrix do use GenServer def start id do GenServer.start(__MODULE__, id) end…
16 июл '18 в 12:28
1 ответ

Неверный аргумент в вызове fxml_stream:new(undefined, 65536)

Я не знаком с эрлангом и новичком в ejabberd. Я получаю следующую ошибку в crash.log. 2017-06-22 04:58:53 =CRASH REPORT==== crasher: initial call: ejabberd_receiver:init/1 pid: <0.23584.370> registered_name: [] exception exit: {{badarg,[{fxml_…
22 июн '17 в 09:23
1 ответ

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

У меня есть простое приложение на основе GenServer, которое анализирует веб-страницу и воспроизводит данные, полученные с нее. Код выглядит примерно так: def start_link do GenServer.start_link(__MODULE__, %{}) end def init(state) do schedule_work(1)…
10 июл '18 в 18:15
1 ответ

Elixir GenServer.start_link выдает исключение вместо возврата кортежа

Я немного играю с GenServer и у меня есть проблемы с реализацией пользовательских init Перезвоните. Пожалуйста, рассмотрите следующий код: defmodule GenS do use GenServer def start_link(initial \\ 0) do GenServer.start_link(__MODULE__, initial) end …
07 сен '16 в 19:20
0 ответов

Эликсир: разделение задач Genserver на машины

Мой потребитель Genserver выглядит так: defmodule Consumer do use GenStage def start_link() do GenStage.start_link(__MODULE__, :ok) end def init(:ok) do {:consumer, :ok, subscribe_to: [Broadcaster]} end def handle_events(documents, _from, state) do …
13 окт '17 в 02:41
2 ответа

Единый процесс Erlang, потребляющий больше памяти и запускающий сигнализацию высокого уровня

У меня есть erlang gen_server, который получает сообщения от клиентов асинхронно (используя приведение). При каждой обработке сообщений сервер вставляет их в упорядоченную таблицу ETS и удаляет некоторые из них в зависимости от условий (из-за условн…
31 мар '16 в 10:17
4 ответа

Как периодически выполнять действия с помощью gen_server Эрланга?

Я хочу запустить gen_server, который дополнительно будет выполнять одно действие каждую минуту. Каков наилучший способ запланировать это?
04 май '11 в 12:55
1 ответ

Erlang TCP сервер голосования ногами

Я пытаюсь написать простую опцию голосования, чтобы добавить на свой существующий сервер. У меня есть маршрутизатор сообщений, использующий gen_server, и он хранит все подключенные клиенты, используя init([]) -> {ok, dict:new()}, Маршрутизатор от…
05 апр '15 в 01:19
1 ответ

Какой смысл в аргументе:ok init в примере Elixir GenServer?

Во вступлении Elixir к GenServer клиентский API запускает сервер с :ok аргумент def start_link(opts \\ []) do GenServer.start_link(__MODULE__, :ok, opts) end И сервер init функция требует, чтобы ее аргумент был :ok def init(:ok) do {:ok, HashDict.ne…
12 ноя '15 в 00:33
1 ответ

Elixir GenStage ConsumerSupervisor Перезагрузите ребенка

Из того, что я читаю здесь: https://hexdocs.pm/gen_stage/ConsumerSupervisor.html все реализации ConsumerSupervisor запускают только дочерний элемент (модуль принтера по ссылке выше) для каждой единицы работы. Есть ли способ перезапустить ребенка, ес…
03 авг '18 в 18:49
1 ответ

Получение состояния gen_server/gen_fsm для отладки

Можно ли получить текущее состояние gen_server процесс (предположительно путем отправки какого-либо системного сообщения)? Это может быть полезно при отладке. Конечно, я могу добавить сообщение, которое возвращает текущее состояние handle_call: get_…
23 ноя '10 в 08:31
1 ответ

Erlang shell перестал загружать мои модули

Это работало нормально на прошлой неделе. Я бы открыл cd myprojectdir erl (erlang shell). c(room). {ok, R} = room:go(). тогда я мог бы использовать gen_server для отправки сообщений в R, взаимодействуя с моим модулем комнаты. Я начал в ветке ковбойс…
29 янв '17 в 22:41
2 ответа

Убедитесь, что процесс gen_fsm/gen_server существует при отправке сообщения

Каков наиболее рекомендуемый способ в Erlang, чтобы убедиться, что какой-то процесс существует до отправки ему сообщения / события? В моем сценарии я запускаю процесс при первом появлении сообщения, а затем оно остается в живых. Продолжая передавать…
23 июл '13 в 16:14
2 ответа

Как запустить Elixir Supervisor в escript

У меня есть смешанный проект с максимально простым Supervisor и GenServer. Когда я звоню из iex: EchoCmd.Supervisor.start_link([:Hello]) GenServer.call(:echoserver, :echo) GenServer.call(:echoserver, :mumble) GenServer.call(:echoserver, :echo) Вызов…
17 ноя '14 в 00:47
1 ответ

Erlang: как правильно диспетчировать gen_server с start_child в супервизоре и вызывать API

У меня есть gen_server в моем приложении cavv, которое мне нужно сначала запустить, чтобы выполнить вызов. Я хочу использовать диспетчер команд для этого. Для краткого примера это gen_server API: gen_server: cavv_user -module(cavv_user). -behavior(g…
02 сен '16 в 16:43
1 ответ

Elixir GenServer handle_call тип обратного вызова

Я внедряю GenServer, и я в замешательстве. я знаю handle_cast является асинхронным, что означает, что вызывающая сторона не ожидает ответа, и мы возвращаем кортеж, подобный этому: {:noreply, new_state}, Я заметил, что мы также можем вернуть тот же к…
23 окт '18 в 12:41
1 ответ

Обрабатывать "события" асинхронно с эликсиром и фениксом

Я использую контроллеры Phoenix для получения данных через вызовы REST. Таким образом, приложение для iOS может отправлять "события" для каждого пользователя, и в зависимости от события мне нужно рассчитать балл / баллы и отправить его обратно польз…