Я бы посоветовал сделать это проще ...
Создайте таблицу базы данных для хранения ваших событий, вставьте в эту таблицу при необходимости, а затем просто внедрите простой метод опроса ajax, чтобы подключаться к серверу каждые x секунд на стороне клиента.
У меня есть проблемы с другими решениями, предусматривающими использование метода push-уведомлений или использование хранилища данных noSql. Это намного сложнее, чем традиционная система уведомлений, использующая инструменты, встроенные в инфраструктуру Django, и, за исключением очень редких исключений, является излишним. Если вам не требуется строгое решение в режиме реального времени, сохраняйте его простым и используйте инструменты, которые уже существуют в платформе, и для людей, у которых есть возражения относительно производительности базы данных или сети, все, что я должен сказать, - это то, что преждевременная оптимизация является корнем все зло.
Создайте модель, которая содержит данные о последних действиях, характерные для вашего приложения, и тогда, когда ваше приложение делает что-то, что должно регистрировать новые действия, вы можете просто вставить в эту таблицу.
Ваше представление будет просто как любое другое представление, вытягивая верхние x строки из этой таблицы RecentActivity
(необязательно на основе параметров запроса и т. Д.).
Тогда на стороне клиента у вас будет простой ajax-опрашиватель, который будет отображать ваш взгляд каждые x секунд. Нет недостатка в сложных плагинах и технологиях, которые вы можете использовать, но написание собственных не так уж и сложно:
function simplePoll() {
$.get("your-url", {query-parameters}, function(data){
//do stuff with the data, replacing a div or updating json or whatever
setTimeout(simplePoll, delay);
});
}
Мое мнение таково, что проблемы с производительностью на самом деле не являются проблемами, пока ваш сайт не станет достаточно успешным, чтобы они стали проблемой. Традиционная реляционная база данных может масштабироваться довольно хорошо, пока вы не достигнете уровня успеха, такого как Twitter, Google и т. Д. Большинство из нас не на этом уровне:)