@HardX

Как с помощью Flask сделать динамический вывод данных из txt файла?

Есть txt файл, в него пишется лог выполнения функции, есть ли возможность выводить содержание этого файла динамически(без перезагрузки страницы) например в textarea?
  • Вопрос задан
  • 283 просмотра
Решения вопроса 1
@HardX Автор вопроса
В итоге сделал через setinterval функцию с отправкой запроса на нужный url с методом get.
Дальше написал декоратор к этому url с методом get, в котором читаю нужный файл, обрабатываю(в том числе по длине, иначе долго грузит) и возвращаю string, которую в свою очередь и помещаю в textarea. (Ну и прописал тут же scroll down, чтобы видеть самые последние данные в textarea при каждом обновлении).
Не знаю насколько это правильно, но это работает именно в том виде, что мне нужно. Если есть комментарии по этому поводу, готов выслушать (прочитать)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
xenon
@xenon
Too drunk to fsck
Да, разными способами.
1. можете поллить раз в секунду javascript'ом и обновлять содержание textarea
2. можете просто на страничке только раз подгружать тот файл, но в страничке сделать <meta http-equiv="refresh" content="30">
3. если прямо красиво хотите - можете использовать websocket (socket.io). Может вам понравится, я писал для этого удобный модуль - https://github.com/yaroslaff/ws-emit , там пример dir2web.py как раз на Flask, прямо с вашей задачей (только он еще и появление новых файлов в каталоге отслеживает). Изменение контента на странице происходит моментально после изменения файла. (в ютуб видео с примером это с 50-ой секунды).
Ответ написан
Комментировать
Клиент может получать информацию по SSE порциями строк из файла. Для этого можно открыть процесс, запустив tail -f file.txt и читать построчно с stdout. Каждую строку или сразу несколько отправлять в стрим клиенту.
https://man7.org/linux/man-pages/man1/tail.1.html
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы