Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

223
Vistas
¿Cómo mostrar los cambios realizados en un archivo de registro en una página web usando Flask y Javascript?

Creé una aplicación de matraz que detecta los cambios realizados en un archivo de registro como el comando tail-f en UNIX, pero cuando lo ejecuto y realizo cambios en el archivo de registro, el resultado no se muestra en la página web, he escrito el código con referencia a esto ,

Aquí está mi aplicación de petaca

 import time import os from flask import Flask, render_template app=Flask(__name__) @app.route('/') def index(): return render_template('index.html') @app.route('/logs') def logs(): def generate(): with open("log.log") as f: while True: # read last line of file line = f.readline() # sleep if file hasn't been updated if not line: time.sleep(0.1) continue yield line return app.response_class(generate(), mimetype='text/plain') app.run(debug=True)

Aquí está el archivo de registro, solo por simplicidad, he creado un archivo de registro ficticio como este

 1 2 3 4 5

y aquí está el archivo index.html

 <!DOCTYPE html> <html> <head> </head> <body> <pre id="output"></pre> <meta charset="utf-8"> <title>Logs</title> <p>LOGS</p> <script> var output = document.getElementById('output'); var xhr = new XMLHttpRequest(); xhr.open('GET', '{{ url_for('logs') }}'); xhr.send(); setInterval(function() { output.textContent = xhr.responseText; }, 1000); </script> </body> </html>

Ahora, cuando ejecuto esta aplicación Flask, no se muestra nada en el servidor localhost, ¿qué estoy haciendo mal aquí para poder mostrar los registros sin actualizar la página web?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

En mi opinión, debe usar un lector para leer la transmisión. Esto significa que no se espera el final de la transmisión, sino que se lee pieza por pieza.

 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <pre id="output"></pre> <script type="text/javascript"> (() => { fetch('/logs') .then(response => { const elem = document.getElementById('output'); const reader = response.body.getReader(); const readStream = ({ done,value }) => { if (done) { return; } let chunk = String.fromCharCode.apply(null, value); elem.textContent += chunk + '\n'; return reader.read().then(readStream); }; reader.read().then(readStream); }); })(); </script> </body> </html>
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda