Как сделать HTML представление / шаблон, который обновляется с новыми данными из измененного файла - PullRequest
0 голосов
/ 29 июня 2018

Итак, у меня есть базовая функция, которая называется «follow» и отслеживает изменения файлов. Эта функция возвращает каждую новую строку, которая добавляется в этот файл. Эта часть работает хорошо, по крайней мере из того, что я вижу при тестировании с функцией печати. Теперь я хочу отобразить эти новые строки в виде строк таблицы в шаблоне HTML.

Это основная функция моего приложения:

import time
import json
from flask import Flask, render_template

app = Flask(__name__)


def follow(myfile):
    myfile.seek(0, 2)
    while True:
        new_line = myfile.readline()
        if not new_line:
            time.sleep(0.1)
            continue
        yield new_line


logfile = open("/files/myfile.log")
new_lines = follow(logfile)
raw_list = []


@app.route("/home")
def output_log():
    for new_line in new_lines:
        print(new_line)
        raw_list.append(new_line)
        result_list = json.dumps(raw_list)
        print(new_line)
        # return render_template("systemlog.html", results=result_list, mimetype='text/html')


if __name__ == "__main__":
app.run(debug=True)

Я использую шаблоны jinja и мне удалось отобразить данные в таблице из статического файла, но как это сделать, когда файл постоянно обновлялся. Обратите внимание, что это будет мониторинг в режиме реального времени.

Как видите, я попробовал несколько отчаянных шагов, включая рендеринг файла с каждой итерацией внутри цикла for, от которого я не ожидал каких-либо стабильных результатов. Также я видел, что люди используют ajax для рендеринга динамического контента, но я не могу понять, как это сделать при мониторинге файлов таким способом.

Любое предложение приветствуется

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...