хвост-f в webbrowser

Я создал сценарий Python, который контролирует файл журнала для изменений (как хвост-f) и отображает его на консоли. Я хотел бы получить доступ к выводу сценария Python в webbrowser. Что я должен был бы создать это? Я думал об использовании Django и jQuery. Любые подсказки или примеры значительно ценятся.

7
задан compie 14 May 2010 в 19:01
поделиться

3 ответа

Сначала создайте сценарий Python, который отслеживает изменения в файле журнала. Если вам это нужно только для целей отладки и тестирования, то использование Django или другого веб-фреймворка будет излишним. Реализовать функциональность веб-сервера Http с помощью сокетов очень просто. Всякий раз, когда приходит запрос Http GET, обслуживайте только разницу от другого запроса. Для этого вам необходимо сохранить в памяти статус каждого приходящего запроса (например, номер последней строки в файле).

Часть jQuery на самом деле довольно проста. Установите таймер с помощью функции setTimeout. Что-то вроде этого будет делать:

function doUpdate() {
  $.ajax({type: "GET", url : tailServiceUrl,
          success: function (data) {
             if (data.length > 4)
             {
                // Data are assumed to be in HTML format
                // Return something like <p/> in case of no updates
                $("#logOutputDiv").append(data);
             }
             setTimeout("doUpdate()", 2000);
           }});
}

setTimeout("doUpdate()", 2000);

Вы также можете создать обратные вызовы для ошибок и тайм-аутов, чтобы сообщить о проблеме с сервером.

8
ответ дан 7 December 2019 в 01:17
поделиться

У меня нет опыта работы с Python или Django, но я предполагаю, что вы можете сделать системный вызов , например tail в Python, и передать детали.

Оттуда я бы использовал вызов jQuery .ajax () с циклом javascript setInterval () для вашего скрипта Python и выводил результаты в div в Интернете. страница. В целом довольно простое решение.

В этом случае вам действительно не нужно использовать системный вызов open tail -f , потому что природа метода JS setInterval () , сценарий Python будет вызывается снова и снова, пока не будет вызван метод JS clearInterval () . Вы объедините детали своего скрипта либо в Python, либо в JS, в зависимости от того, где вы хотите выполнить работу. Я бы предложил Python, поскольку у вас под рукой будут более надежные функции и вы отправите меньше данных через вызов AJAX. Теоретически, вероятно, не должно быть слишком много логики, необходимой в коде jQuery во внешнем интерфейсе. Просто отобразите данные.

2
ответ дан 7 December 2019 в 01:17
поделиться

Почему бы вам не вывести данные в HTML-файл? Вы могли бы запустить задание cron для выполнения вашего сценария, который, в свою очередь, выводил бы HTML-файл, к которому можно было бы получить доступ из браузера.

0
ответ дан 7 December 2019 в 01:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: