Utilizzare una vista Flask per leggere continuamente dal file per sempre e trasmettere la risposta. Usa JavaScript per leggere dallo stream e aggiornare la pagina. Questo esempio invia l'intero file, potreste voler troncarlo che a un certo punto per risparmiare larghezza di banda e memoria. Questo esempio dorme tra le letture per ridurre il carico della CPU dal ciclo infinito e consentire ad altri thread un tempo più attivo.
from time import sleep
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/stream')
def stream():
def generate():
with open('job.log') as f:
while True:
yield f.read()
sleep(1)
return app.response_class(generate(), mimetype='text/plain')
app.run()
<pre id="output"></pre>
<script>
var output = document.getElementById('output');
var xhr = new XMLHttpRequest();
xhr.open('GET', '{{ url_for('stream') }}');
xhr.send();
setInterval(function() {
output.textContent = xhr.responseText;
}, 1000);
</script>
Questo è quasi la stessa di this answer, che descrive la modalità di streaming e analizzare i messaggi, anche se la lettura da un file esterno per sempre era sufficiente per essere romanzo di essa la propria risposta. Il codice qui è più semplice perché non ci preoccupiamo di analizzare i messaggi o terminare lo stream, limitando la coda del file per sempre.
Ho provato a utilizzare ma flask non carica la pagina html e mostra il contenuto di un'altra pagina all'interno di quell'area (invece di/Syslog va a/Syslog/# precaricamento e fallisce) –
Ora, quando apro la pagina html da solo (non con il flacone) mostra "è necessario un plug-in per visualizzare questo contenuto" –
+ Usare