Size: a a a

2020 May 31

ŹR

Źmićer Rubinštejn in pro.elixir
Boris Beginin
так что что ребят, походу надо переписывать?
Забей, если уже работает
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Просто под нагрузкой твой консьюмер может получить полный mailbox, и это то, для избежания чего придумали genstage
источник

BB

Boris Beginin in pro.elixir
Źmićer Rubinštejn
Забей, если уже работает
если не сложно, можно спросить как бы ты решил подобную задачу?
источник

AD

Anastasiya Dyachenko in pro.elixir
Źmićer Rubinštejn
Посылаешь все что есть и конец, это мы уже обсуждали
Я помнила что был какой-то с этим момент и вспомнила. Если деманд не полный отправлен, то следующий handle_demand не запросится пока не отправишь предыдущий. Например у тебя файл 100 строк, а за ним файл в 1 строку — вот он не обработается пока не появится третий файл
источник

AD

Anastasiya Dyachenko in pro.elixir
Это нормальное поведение или нет
источник

AD

Anastasiya Dyachenko in pro.elixir
Или файл всегда ровно один
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Если ты читаешь из файла - или файлов, то есть только один способ не удовлетворить demand - это когда конец всего. В этом случае тебе все равно что больше не спросят - ты убьешь весь пайплайн
источник

AD

Anastasiya Dyachenko in pro.elixir
Т.е. подобие flow с динамической генерацией процессов - единственное применение?
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Рассмотрим вариант, когда ты читаешь из Кафки, те ивенты могут ещё появится, но пока их нету:

Нужно сохранить деманд (который остался) в стейте, и заскежулить себя на то, чтобы проверить через m секунд.
В этом handle info у нас есть деманд в стейте, и нам надо его покрыть. Если не покрывается - повторяем пока не покроется.
источник

ŹR

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

ŹR

Źmićer Rubinštejn in pro.elixir
Есть вариант, что мы к примеру получаем кусок из одного ивента, но он внутри системы является m ивентов. Тогда самая сложная хрень: надо в стейте хранить и деманд ( если его не закрыли ) и оставшиеся ивенты (если наоборот, деманд закрыли но ещё осталось)

Это все ещё backpressure, но это самая сложная руками писательная хрень
источник

AD

Anastasiya Dyachenko in pro.elixir
Ок идею я поняла, спасибо. Мне лично кажется было бы неплохо иметь диспатчер, который принимает меньший деманд и не заставляет писать обработку
источник

AD

Anastasiya Dyachenko in pro.elixir
По логике это вроде ничего не ломает
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Видимо это ведёт к жесткому увеличению посылки сообщений
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Потому что ща консьюмер ждёт пока ему все не дойдёт, а в «твоём» случае он будет в цикле дергать продюсер «дай мне», получать пустой список, и так по кругу
источник

AD

Anastasiya Dyachenko in pro.elixir
Да наверно так и есть
источник

AD

Anastasiya Dyachenko in pro.elixir
Ок, спасибо за идеи, буду свои костыльные genstage переписывать :D
источник

BB

Boris Beginin in pro.elixir
Anastasiya Dyachenko
Ок, спасибо за идеи, буду свои костыльные genstage переписывать :D
Мне тоже пора
источник

BB

Boris Beginin in pro.elixir
лол
источник

BB

Boris Beginin in pro.elixir
Да еще раз спасибо ребят
источник