Почему статистика не обновляется в реальном времени?

Привет! Мы разрабатываем фронтенд на основе API Discourse и столкнулись с необычным поведением: статистика не обновляется в реальном времени в нескольких местах.

  • Во-первых, при запросе /directory_items.json?period=all&order=likes_given мы заметили, что если пользователь ставит несколько лайков, статистика обновляется только спустя значительное время.
  • Во-вторых, при получении сводной статистики пользователя через запрос /u/<user>/summary.json данные либо обновляются некорректно, либо, по крайней мере, не в реальном времени.

Мы используем Docker-образ bitnamis для запуска Discourse. Не уверены, связана ли эта проблема с данным образом или это ожидаемое поведение самого API Discourse.

В Docker-образе используется компонент под названием Sidekiq, и мы предполагали, что проблема может быть в нём. Мы пытались запустить, казалось бы, правильную задачу (Jobs::DashboardStats) для обновления статистики, но безрезультатно. Статистика не обновляется даже после запуска запланированных задач. Есть ли какая-либо другая задача, связанная с этим, или мы ищем не там?

С уважением,
Маноло

Все хорошие платформы различают то, что должно быть обязательно актуальным, и то, что, вероятно, может подождать, чтобы сэкономить ресурсы.

Элементы каталога обновляются, по-видимому, каждый час. Это означает, что гораздо дешевле показывать один и тот же результат каждому пользователю, чем пересчитывать его по требованию каждый раз, когда пользователь пытается получить к нему доступ.

Исходный код — ваш друг:

Да, вы, возможно, сможете увеличить эту частоту с помощью простого плагина, но будьте осторожны с влиянием на ресурсы и производительность, которое это может оказать.

Справедливо, мы как раз думали, что проблема в этом. Я забыл проверить исходный код, так как не ожидал, что он там будет, хотя это вполне логично!

Спасибо за быстрый ответ!