Size: a a a

2020 October 07

DB

Dima Bildin in Frontend UA
Andrey Listochkin
Народ, подскажите как задачу решить.

Приходят данные, есть асинхронная функция, которая эти данные обрабатывает.

Данные приходят каждую секунду. Обработка 1 или нескольких данных занимает примерно одинаковое время. Но важно, чтобы они процессились последовательно.

Если за секунду данное не удалось процесснуть, и уже пришло следующее, то я не хотел бы запускать процессор, подождать следующего данного, и процесснуть сразу 2.

Соответственно, если не успел процесснуть штук 5-10, то потом накопившиеся данные процессим сразу пачкой.

Короче, нужен такой буферизатор перед асинхронной функцией.

Я могу сам нагородить огород, но мб в каком-то rx / стримах / еще где есть готовая штука для таких сценариев?
источник

AL

Andrey Listochkin in Frontend UA
не совсем. Этот по времени буферизирует, а мне по выполнению процессинга
источник

DB

Dima Bildin in Frontend UA
Andrey Listochkin
не совсем. Этот по времени буферизирует, а мне по выполнению процессинга
https://www.learnrxjs.io/learn-rxjs/operators/transformation/bufferwhen
ну есть такое. Процессинг данных заворачивать в свой стрим и скармливать в bufferWhen, если я правильно понял
источник

AL

Andrey Listochkin in Frontend UA
да, вот смотрю его. Как всегда с Rx - 100500 функций в функциях, нихера не понятно 😂
источник

DB

Dima Bildin in Frontend UA
Это да)
источник

VS

V7v S6k in Frontend UA
Andrey Listochkin
Народ, подскажите как задачу решить.

Приходят данные, есть асинхронная функция, которая эти данные обрабатывает.

Данные приходят каждую секунду. Обработка 1 или нескольких данных занимает примерно одинаковое время. Но важно, чтобы они процессились последовательно.

Если за секунду данное не удалось процесснуть, и уже пришло следующее, то я не хотел бы запускать процессор, подождать следующего данного, и процесснуть сразу 2.

Соответственно, если не успел процесснуть штук 5-10, то потом накопившиеся данные процессим сразу пачкой.

Короче, нужен такой буферизатор перед асинхронной функцией.

Я могу сам нагородить огород, но мб в каком-то rx / стримах / еще где есть готовая штука для таких сценариев?
takeLatest saga?
источник

AL

Andrey Listochkin in Frontend UA
V7v S6k
takeLatest saga?
Я хз что это
источник

VS

V7v S6k in Frontend UA
Andrey Listochkin
Я хз что это
источник

AR

Alexey Raspopov in Frontend UA
Andrey Listochkin
Народ, подскажите как задачу решить.

Приходят данные, есть асинхронная функция, которая эти данные обрабатывает.

Данные приходят каждую секунду. Обработка 1 или нескольких данных занимает примерно одинаковое время. Но важно, чтобы они процессились последовательно.

Если за секунду данное не удалось процесснуть, и уже пришло следующее, то я не хотел бы запускать процессор, подождать следующего данного, и процесснуть сразу 2.

Соответственно, если не успел процесснуть штук 5-10, то потом накопившиеся данные процессим сразу пачкой.

Короче, нужен такой буферизатор перед асинхронной функцией.

Я могу сам нагородить огород, но мб в каком-то rx / стримах / еще где есть готовая штука для таких сценариев?
что-то вроде debounce/throttle но с накоплением данных?
источник

AL

Andrey Listochkin in Frontend UA
Alexey Raspopov
что-то вроде debounce/throttle но с накоплением данных?
ага. Это бек, если что
источник

AL

Andrey Listochkin in Frontend UA
забыл написать, что дело на беке происходит. Node-процесс
источник

AL

Andrey Listochkin in Frontend UA
думаю, проще на стримах сделать
источник

EO

Eugene Obrezkov in Frontend UA
Я бы делал свой огород
источник

EO

Eugene Obrezkov in Frontend UA
Что-то типа классического back pressure только с ещё одной очередью сбоку или что-то типа
источник

AL

Andrey Listochkin in Frontend UA
но щас посмотрел, и оказалось, что в Object Mode стримы всегда данные отправляют по одному объекту
источник

AL

Andrey Listochkin in Frontend UA
думаю, пока сделать так:
стану измерять время процессинга и логировать
Если время будет превышать 1s, буду тоже логгировать

Поживу так какое-то время, и посмотрю, надо ли вообще заморачиваться 😁
источник

KY

Kyrylo Yakovenko • 𝟰... in Frontend UA
я аж икнул
источник

KY

Kyrylo Yakovenko • 𝟰... in Frontend UA
а шо никто рэббит не посоветовал? 🙂
источник

AL

Andrey Listochkin in Frontend UA
1. не та публика
2. а ТА публика посоветовала бы Кафку. Сейчас везде принято Кафку сувать и все системы вокруг этой кафки строить
источник

VS

V7v S6k in Frontend UA
та я теж гикаю, але раз такий кейс…
источник