You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ReportApp - сервис для уменьшения трат на составление отчётов.
Принцип работы:
Запрос отчёта поступает в очередь.
Приложение читает очередь с буфером определенного размера и записывает запросы в БД.
Раз в час запускается задача, которая читает первый {smallBatchSize} сообщений из БД, отсортированных по времени запроса.
Она проверяет, нет ли запросов, которые скоро истекают. Если есть, то обрабатывает до тех пор, пока срочные запросы не кончатся.
Раз в день в 23 по МСК запускается задача, которая обрабатывает все накопившиеся запросы по {largeBatchSize} за раз.
Все сформированные отчеты попадают в БД.
Пользователь может запросить отчёт по item_id и registration_id, дополнительно указав номер страницы и количество элементов на странице.
Все ответы кэшируются на одну минуту, чтобы пользователю было сложнее положить БД.
Также добавлен rate limiter, который по умолчанию разрешает 5 запросов от пользователя раз в 30 секунд.