Я создал сценарий Python, который контролирует файл журнала для изменений (как хвост-f) и отображает его на консоли. Я хотел бы получить доступ к выводу сценария Python в webbrowser. Что я должен был бы создать это? Я думал об использовании Django и jQuery. Любые подсказки или примеры значительно ценятся.
Сначала создайте сценарий 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);
Вы также можете создать обратные вызовы для ошибок и тайм-аутов, чтобы сообщить о проблеме с сервером.
У меня нет опыта работы с Python или Django, но я предполагаю, что вы можете сделать системный вызов , например tail
в Python, и передать детали.
Оттуда я бы использовал вызов jQuery .ajax ()
с циклом javascript setInterval ()
для вашего скрипта Python и выводил результаты в div в Интернете. страница. В целом довольно простое решение.
В этом случае вам действительно не нужно использовать системный вызов open tail -f
, потому что природа метода JS setInterval ()
, сценарий Python будет вызывается снова и снова, пока не будет вызван метод JS clearInterval ()
. Вы объедините детали своего скрипта либо в Python, либо в JS, в зависимости от того, где вы хотите выполнить работу. Я бы предложил Python, поскольку у вас под рукой будут более надежные функции и вы отправите меньше данных через вызов AJAX. Теоретически, вероятно, не должно быть слишком много логики, необходимой в коде jQuery во внешнем интерфейсе. Просто отобразите данные.
Почему бы вам не вывести данные в HTML-файл? Вы могли бы запустить задание cron для выполнения вашего сценария, который, в свою очередь, выводил бы HTML-файл, к которому можно было бы получить доступ из браузера.