Описание тега genstage

GenStage - это спецификация для обмена событиями между производителями и потребителями Elixir.
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
1 ответ

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

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

Поток эликсира: множество аргументов

Я пытаюсь написать поток, который выглядит так: def perform(id) do id |> Flow.from_stage(max_demand: 10) |> Flow.map(&download(&1)) |> Flow.map(&process(&1)) |> Flow.each(&cleanup(&1, &2)) |> Flow.each(&amp…
17 окт '17 в 00:46
0 ответов

Ограничение скорости с потоком в эликсире

Как часть потока данных, я хотел бы загрузить список файлов со скоростью 10 запросов в секунду. Является ли спящий поток, как сделано здесь, лучшим подходом? case ExRated.check_rate(@endpoint, scale, limit) do {:ok, _} -> request.() {:error, _} -…
26 авг '18 в 16:20
0 ответов

Может ли Dispatcher получить доступ к своим родительским методам / атрибутам Producer?

Может ли пользовательский диспетчер сделал с @behavior GenStage.Dispatcher получить доступ к своим родительским модулям, который вызывает его как {:producer, state, dispatcher: CustomDispatcher}? Я понял, что диспетчер запускается в том же процессе,…
29 авг '18 в 07:24
0 ответов

Как спать по вкусу потребителю / производителю?

У меня есть Producer, в котором данные выбираются из базы данных: def handle_demand(demand, []) do Logger.debug("#{inspect(self())} Producer empty handle_demand #{demand}") next_pack = selecting new pack case List.last(next_pack) do nil -> Logger…
07 май '18 в 13:47
0 ответов

catch [error] GenServer #PID<0.1278.0> прекращается

Можно ли отловить возможную ошибку в пределах handle_events который создает это исключение? [error] GenServer #PID&lt;0.1278.0&gt; terminating Я пытался слушать в потребителе обратный вызов def terminate(reason, state) do но не вызывается. Мне интер…
22 авг '18 в 13:44
1 ответ

Использование GenStage/Flow для обработки событий в реальном времени

В настоящее время я создаю систему обработки событий в реальном времени с использованием Elixir, и сейчас я пытаюсь обернуть голову вокруг GenStage/Flow, чтобы понять, являются ли это правильные абстракции, на которые можно опираться. К сожалению, п…
16 авг '18 в 19:01
0 ответов

Почему мой потребитель в GenStage не срабатывает?

Когда я бегу iex все данные потребляются DataConsumer. Теперь, если я изменю порядок DataConsumerLevel2 с DataConsumer тогда все данные потребляются DataConsumerLevel2, Это почему? Должен ли Диспетчер отправлять данные потребителям на основе их филь…
23 май '18 в 13:15
1 ответ

GenStage: Как обрабатывать ситуации, когда производитель не может предоставить события?

Следующий сценарий: производитель GenStage обрабатывает поток Twitter (используя Stream API и ExTwitter) и предоставляет набор твитов (макс. Спрос, который запрашивает потребитель) потребителю GenStage. Затем потребитель просто печатает их. Следующа…
12 фев '17 в 13:17
2 ответа

Как проверить Elixir GenStage Consumer?

Я нашел некоторые ресурсы о том, как протестировать производителя, однако я ничего не смог найти, чтобы показать, как тестировать Потребителя. В продюсере я создаю фиктивного потребителя, и все работает нормально, но в потребительском я борюсь с тес…
1 ответ

Эликсир: топология GenStage

В целях самообразования я стараюсь выучить эликсир и обернуть голову вокруг GenStage библиотека. Я прочитал документацию и получил ее по большей части, однако у меня есть пара вопросов для моего конкретного домена. Я пытаюсь построить веб-скребок, к…
12 май '17 в 07:42
2 ответа

Динамический граф вычислений во время выполнения с использованием Elixir Genstage

Я хотел бы иметь возможность динамически изменять конвейер вычислений во время выполнения, но кажется, что GenStage требует, чтобы вычислитель вычислялся во время компиляции через subscribe_to: [...] механизм. Есть ли способ создания динамических вы…
24 окт '18 в 12:24
1 ответ

Используйте соединение redis в Elixir Genstage.

У меня есть пример приложения genstage, и в его потребителях мне нужно использовать соединение с Redis. И я не понимаю, как мне нужно передать это соединение handle_events. Если я напишу: defp connection do {:ok, conn} = Redix.start_link(host: "0.0.…
09 май '17 в 12:46
0 ответов

Elixir GenStage Cast не возвращает совпадений с функциональными предложениями

У меня были проблемы с использованием актеров с GenStage. Я пытаюсь передать данные в источник из разных частей моего кода, но когда я пытаюсь выполнить вызов приведения, я получаю эту ошибку: нет совпадений с функциональными предложениями в ModuleN…
31 авг '17 в 08:12
0 ответов

GenStage: плохое возвращаемое значение

Я пытаюсь реализовать чрезвычайно простой GenStage с целью убедиться, что я его понимаю и могу заставить его работать, прежде чем я начну знакомить с логикой своего конкретного приложения. Я получаю ошибку при возврате данных от производителя. Данны…
27 сен '17 в 18:19
1 ответ

Потребитель эликсира GenStage min_demand

Есть проект с genstage. Производитель A, производитель-потребитель B и потребитель C. B запрашивает события по одному на A (min_demand: 0, max_demand: 1). {:producer_consumer, nil, subscribe_to: [{Grub.Producer, max_demand: 1, min_demand: 0}]} C зап…
10 сен '18 в 20:43
0 ответов

Elixir: настройка GenStages для удовлетворения динамических требований

У меня есть GenStage Producer <- Consumer для чтения и обработки чего-либо с сообщением из моей очереди Amazon SQS, что означает, что мой Consumer запрашивает спрос, когда ему нечего делать, а производитель просто получает и пытается извлечь события…
12 дек '18 в 13:46
1 ответ

Невозможно пропустить поток через пользовательские этапы с "Flow.through_specs/3"

Я пытаюсь включить GenStage в конвейер потока. Однако это приводит к исключению. Если я правильно понимаю, Flow.through_specs/3 будет порождать несколько этапов и разделять входящие элементы соответственно. Я что-то пропустил? Я использую Flow v0.14…
30 авг '18 в 13:26
1 ответ

GenStage.from_enumerable зависает с прерывистым потоком

У меня есть поток, который не производит данные так быстро, как потребляется. Итак, у меня есть продюсер, который определяется так: def start_link() do create_stream |&gt; GenStage.from_enumerable(name: Producer) end Тогда мой производитель-потребит…
27 июн '18 в 15:21