Временная шкала контента django | Повышение производительности и времени отклика - PullRequest
0 голосов
/ 30 марта 2020

У меня есть проект django, с PostgreSQL в качестве БД, Nginx и gunicorn в качестве веб-сервера, и redis в качестве серверной части кэша. Я хочу показать каждому пользователю шкалу времени содержания, за которым он / она следовал. например, сообщения от подписчиков, страниц и т. д. c. Я также хочу предложить каждому пользователю контент, основанный на его / ее поведении и предыдущих понравившихся постах.

Итак, я знаю, что делать и как использовать наборы запросов, чтобы найти все данные, которые я должен показать пользователю. Моя проблема в том, что этот процесс слишком медленный! Использование Querysets и вычисление предложенного содержимого каждый раз, когда пользователь открывает окно, является для меня очень дорогим вычислением. Я попытался уменьшить нагрузку путем кэширования ответа и наборов запросов, а также ограничить поиск интервалом времени (главным образом с момента последнего входа пользователя в систему, а также кэшировать другое содержимое на стороне клиента и выполнить повторную проверку на случай, если произошла ошибка). изменить)
Мой вопрос заключается в том, что я могу сделать, чтобы ускорить мой ответ, и какова правильная архитектура / дизайн для моих целей, в настоящее время я работаю над балансировкой нагрузки, чтобы выполнить некоторые запросы чтения на подчиненной БД, чтобы уменьшите нагрузку на мою основную базу данных.
Я также запланировал запуск системы подсказок в течение ночи, когда на сервере нет пользователей, и вычисляю предложения для пользователей, чтобы сократить время вычислений, но я думаю, что жертвую в реальном времени система предложений для чего-то, что может быть легко исправлено.

...