Итак, у меня есть базовая функция, которая называется «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 для рендеринга динамического контента, но я не могу понять, как это сделать при мониторинге файлов таким способом.
Любое предложение приветствуется