Yo sugeriría hacer que sea sencillo ...
Crear una tabla de base de datos para almacenar los eventos, insertar en esa mesa en su caso, a continuación, sólo poner en práctica una técnica simple de ajax de votación para golpear el servidor cada x segundos en el lado del cliente.
Me preocupan otras soluciones que consideren el uso de un enfoque de notificación push o el uso de un almacén de datos noSql. Es mucho más complicado que un sistema de notificación de extracción tradicional que utiliza las herramientas integradas en el marco de trabajo de Django, y salvo excepciones muy raras, es excesivo. A menos que requiera específicamente una solución estricta en tiempo real, manténgala simple y use las herramientas que ya existen en el marco, y para las personas con objeciones basadas en el rendimiento de la base de datos o de la red, todo lo que tengo que decir es que la optimización prematura es la raíz de todo mal
Cree un modelo que contenga datos de actividad recientes específicos para su aplicación y luego, siempre que su aplicación haga algo que deba registrar nueva actividad, puede simplemente insertarla en esta tabla.
Su vista sería simplemente como cualquier otra vista, tirando de las primeras filas x de esta tabla RecentActivity
(opcionalmente basada en parámetros de consulta y lo que sea).
Luego, en el lado del cliente, tendría un simple sondeo ajax que golpea su vista cada x segundos. No hay escasez de plugins complicados y tecnologías que se pueden utilizar, pero escribir su propio no es tan complicado, ya sea:
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);
});
}
Mi opinión es que los problemas de rendimiento no son realmente problemas hasta que su sitio es lo suficientemente exitoso para ellos ser un problema Una base de datos relacional tradicional puede escalar bastante bien hasta que empiece a alcanzar el nivel de éxito como Twitter, Google, etc. La mayoría de nosotros no estamos en ese nivel :)
Esto es generalmente un buen consejo, pero la pregunta sí lo dijo específicamente "en django (con AJAX long-polling)". – dkamins