
Dmitry
06.04.2017
16:06:29
Потому что его нету в OTP

عاصم بن حارث
06.04.2017
16:09:44
Потому что его нету в OTP
хммм... отп спроектировали еще "при царе Горохе" ))) Еликсир-же волен себе в core и генстэйдж встроить. не?

Dmitry
06.04.2017
16:11:11
Я думаю Жозе будет пытаться встроить его в OTP
С учётом того как он коммитит в Erlang - это реально

Google

عاصم بن حارث
06.04.2017
16:11:49

Rumata
06.04.2017
16:14:56
Я запилил почти
То что хотел
На ген стейдж
Единственное пока не понял
Как пинать продюсер

shadowjack
06.04.2017
16:22:14
Что значит пинать?

Dmitry
06.04.2017
16:22:48
Там надо пинать консьюмер а не продьюсер
Но смысл в том, что как его пинать - тоже не понятно
Короче говоря, из того что я понял - ГенСтейдж это наебос. Тебе кажется что он решает твои проблемы - но он нихера не решает.
Просто связывает несколько процессов. Но вот как именно инициировать приём-передачу нужно делать самому
А это самое непонятное
И короче когда говорят что дискорд там что-то там уменьшил количество серваков - это значит что они не умеют нихера готовить ОТП

Google

shadowjack
06.04.2017
16:45:38
Геестейдж это такой копромисс между Enum/Stream.
Как я это понимаю

Dmitry
06.04.2017
16:46:13
А Флоу можно сделать на генсерверах

anton
06.04.2017
16:46:53
genStage это попытка как-то двинуться в сторону того, что бы заявить о том, что elixir типа реактивен и соблюдает reactive manifesto

Dmitry
06.04.2017
16:47:03
Нет, Флоу это компромисс
Короче я ещё почитал и запутался нафиг

عاصم بن حارث
06.04.2017
16:58:15
хммм... прикрутил стэдж к моей задачке... не завелся ((( Где накуролесил? надо трэйсить... ((((

Dmitry
06.04.2017
16:59:49
Я правильно понимаю, что после того как בםמדוצקר выполняет handle_events, он заново выпоняет handle_events?
И так по кругу до бесконечности?
Consumer*
Т.е. по сути такой циклический исполнитель. А если в продьюсере закончились, то он подвисает

عاصم بن حارث
06.04.2017
17:03:43
хммм... у меня похожая нить рассуждений. есть подозрение, что ошибочное... Передымлю титульную стр. https://hexdocs.pm/gen_stage/GenStage.html

Dmitry
06.04.2017
17:04:27
Так а когда тогда выполняются handle_info?
Или он после выполнения handle_events самому себе шлёт cast {:handle_events} и оно добавляется в очередь
Ладно, с консьюмером что-то понятно.
А вот продьюсер к примеру - хочу посылать запросы в друзья в вк. Проверяю через апи есть ли запросы - нету. И чё делать тогда?
Не выходить из handle_demand до тех пор пока не придёт запрос в друзья и в цикле долбить АПИ?
короч нихера не понятно.
А есть где-нибудь рубрика "спроси у Жозе"? я бы у него спросил...

Andrey
06.04.2017
17:52:03
наверняка он в слаке тусуется

Google

Vladimir
06.04.2017
18:12:56
https://elixirforum.com/t/my-genstage-producer-runs-out-of-work-to-do-i-buffer-demand-but-how-do-i-know-there-is-new-work/3437/3
https://elixirforum.com/t/genstage-and-twitter-stream/1435/12

Dmitry
06.04.2017
18:20:28
Ух ты, спасибо!

Vladimir
06.04.2017
18:21:25
На самом деле, лучше поискать какой-нибудь враппер API, который использует GenStage.

Dmitry
06.04.2017
18:25:11
Я короче всё-таки не понял.
Если я прошу у продьюсера к примеру 10 сообщений, он стучит http и получает 9 - что тогда делать?
Посылать 9?

Vladimir
06.04.2017
18:27:35
Вроде бы GenStage сам их посылает.
Но да, вернуть 9.

Rumata
06.04.2017
18:27:55

Vladimir
06.04.2017
18:28:00
И сохранить demand.

Dmitry
06.04.2017
18:28:43
Так а кто вообще решает, чему равен demand?
Вроде как консьюмер работает в handle events с одним евентом только

Vladimir
06.04.2017
18:29:59

Dmitry
06.04.2017
18:30:15
Или handle demand тоже все время запускается по кругу, просто если консьюмер тупит то туда в demand прилетают нули?

Vladimir
06.04.2017
18:30:19

Rumata
06.04.2017
18:30:40
В доке блядь хуй че разберёшь
Три примера
И ебитесь

Google

Rumata
06.04.2017
18:30:57
Как хотите
И Валим на конференции Тататрин
Вот у меня продюсер
В него пинаешь хуйню
А-ля sync

shadowjack
06.04.2017
18:32:02

Rumata
06.04.2017
18:32:04
С датой
Он и дальше попер до консюмера

Admin
ERROR: S client not available

Rumata
06.04.2017
18:33:48
Там в консюмере сделал
Хуйню
И все
Вон пример с бродкастом глянь

Dmitry
06.04.2017
18:34:29
Короче говоря, я правильно понял что handle demand крутится в цикле, и если в первый раз ты недодал, то во второй раз просто даёшь больше на столько, на сколько в первый раз недодал?

Vladimir
06.04.2017
18:34:46
Использовал EventManager из статьи: https://pastebin.com/BeLfPx42
Лонгполлинг эвентов вкалтакта: https://pastebin.com/p0HXGSRJ
`sync_notify`в эвентменеджере.

Rumata
06.04.2017
18:36:22
Ну да

Vladimir
06.04.2017
18:36:30
timeout можно выставить :infinity, ну и тогда поллер не отправит продюсеру эвенты, пока в этом не появится необходимость.

Rumata
06.04.2017
18:36:42
Там есть пример где он в лупе хуярит
С супервизором

Google

Rumata
06.04.2017
18:36:58
Я так и сделал

Vladimir
06.04.2017
18:36:58
По идее producer сам может (если не должен) быть поллером.

Taras ?
06.04.2017
18:37:04

Dmitry
06.04.2017
18:37:47
Я просто пытаюсь понять кто вызывает handle events и handle demand

Vladimir
06.04.2017
18:38:13
Это происходит behind the scenes.

Dmitry
06.04.2017
18:38:13
Это блять меня осчастливит и решит все вопросы

Taras ?
06.04.2017
18:38:19
Как хотите
согласен, лично мне примеров нехватает тоже, люблю по примерах вьезжать а не тупо на абстракциях

Vladimir
06.04.2017
18:39:00

Dmitry
06.04.2017
18:39:31
По идее я могу работать с генсервером только потому что знаю как написать его самому

Vladimir
06.04.2017
18:39:54
Сорцы посмотри.
Но вообще да, не хватает real world примеров.

Dmitry
06.04.2017
18:40:30
Я смотрел - 4к лок и нихуя не понятно)

Rumata
06.04.2017
18:40:36
Ты из лиги говнякиных?

Dmitry
06.04.2017
18:41:33
Я ж не говорю что я его сам буду писать. Но я знаю как он работает от и до

Vladimir
06.04.2017
18:41:54
Но это УДОБНО.
https://pastebin.com/vgXq0yaY

Dmitry
06.04.2017
18:44:56
Вот примеру в комментах очень часто написано GenStage internal buffer. А что это?

Taras ?
06.04.2017
18:45:58