Лучший способ хранить данные при обратном вызове -Python - Django - Bokeh - Webdevelopment - PullRequest
0 голосов
/ 26 марта 2019

При выполнении обратного вызова bokeh (масштабирование) должны быть загружены новые 500 значений. xRangeStart и xRangeEnd определяют новые необходимые значения из общего массива. Как сохранить этот общий массив, чтобы получить лучшую производительность.

Redis, напрямую из базы данных (MongoDB), как-то еще? (Бэкэнд без состояния)

поток:

действие пользователя в интерфейсе -> обратный вызов -> ajax -> здесь мне нужно получить новые данные, как описано -> получить новые данные из общего массива -> возврат ajax - -> source.change.emit ()

часть, выделенная жирным шрифтом, хранится в REDIS atm (кодирование с помощью python). Обратный вызов занимает несколько секунд, когда на диаграмме несколько графиков / линий (около 1 секунды для каждого массива с размером 3 миллиона значений). Есть ли способ улучшить эту скорость вообще.

1 Ответ

0 голосов
/ 27 марта 2019

Вы говорите, что бэкэнд AJAX поддерживает Python, поэтому вы можете попробовать Datashader для предварительной обработки и оптимизации ваших данных, которые будут возвращены.

Другая опция находится на внешней стороне, чтобы заменить wheel_zoom «ползунком масштабирования», который имеет «mouseup» в качестве callback_policy, чтобы обратный вызов не срабатывал непрерывно, а только при отпускании мыши. Также наличие обратного вызова ползунка позволяет выполнять обратный вызов Python на сервере Bokeh, где вы можете хранить предварительно обработанную, оптимизированную копию данных Redis.

...