cola -f en un navegador web

He creado una secuencia de comandos de Python que supervisa un archivo de registro en busca de cambios (como tail -f) y lo muestra en una consola. Me gustaría acceder a la salida del script Python en un navegador web. ¿Qué necesitaría para crear esto? Estaba pensando en usar Django y jQuery. Cualquier consejos o ejemplos son muy apreciados.

Primero cree una secuencia de comandos de Python que supervise el archivo de registro en busca de cambios. Si solo necesita esto para fines de prueba de depuración, entonces es una exageración usar Django u otro marco web. Es muy fácil implementar la funcionalidad del servidor web HTTP mediante sockets. Siempre que venga una solicitud Http GET, sirve solo la diferencia de la solicitud diferente. Para lograr esto, necesita almacenar en la memoria el estado de cada solicitud que llega (por ejemplo, el número de la última línea del archivo).

La parte de jQuery es bastante fácil. Configurar un temporizador con la función setTimeout. Algo como esto hará:

function doUpdate() { $.ajax({type: "GET", url : tailServiceUrl, success: function (data) { if (data.length > 4) { // Data are assumed to be in HTML format // Return something like 

in case of no updates $("#logOutputDiv").append(data); } setTimeout("doUpdate()", 2000); }}); } setTimeout("doUpdate()", 2000);

También puede crear devoluciones de llamada por error y tiempo de espera para informar un problema con el servidor.

No tengo ninguna experiencia con Python o Django, pero asumo que puedes hacer una llamada al sistema como la tail en Python y transmitir los detalles.

A partir de ahí, usaría una llamada jQuery .ajax() con un bucle setInterval() javascript a su script de Python y los resultados a un div en la página web. En general, una solución bastante simple.

En este caso, realmente no necesitaría usar una llamada de sistema open tail -f porque, debido a la naturaleza del método JS setInterval() , el script de Python se llamará una y otra vez hasta que se clearInterval() método JS clearInterval() . Usted agregará los detalles de su script en Python o JS dependiendo de dónde quiera hacer el trabajo. Le sugeriría Python, ya que tendría características más robustas a su scope y enviaría menos datos a través de la llamada AJAX. Teóricamente, probablemente no debería ser necesaria demasiada lógica en el código jQuery en el extremo delantero. Solo muestra los datos.

¿Por qué no envía los datos a un archivo HTML? Podría ejecutar un trabajo cron para ejecutar su secuencia de comandos, lo que a su vez generaría un archivo HTML al que se podría acceder desde el navegador.