【发布时间】:2011-02-19 16:18:02
【问题描述】:
我创建了一个 Python 脚本,用于监视日志文件的更改(如 tail -f)并将其显示在控制台上。我想在网络浏览器中访问 Python 脚本的输出。我需要什么来创建这个?我正在考虑使用 Django 和 jQuery。非常感谢任何提示或示例。
【问题讨论】:
标签: javascript jquery python django console
我创建了一个 Python 脚本,用于监视日志文件的更改(如 tail -f)并将其显示在控制台上。我想在网络浏览器中访问 Python 脚本的输出。我需要什么来创建这个?我正在考虑使用 Django 和 jQuery。非常感谢任何提示或示例。
【问题讨论】:
标签: javascript jquery python django console
首先创建一个python脚本来监控日志文件的变化。如果您只需要它来进行调试 - 测试目的,那么使用 Django 或其他 Web 框架就有点过头了。使用套接字实现 Http Web 服务器功能非常容易。每当一个 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);
您还可以为错误和超时创建回调以报告服务器问题。
【讨论】:
为什么不将数据输出到 HTML 文件?你可以运行一个 cron 作业来运行你的脚本,这反过来会喷出一个 HTML 文件,可以从浏览器访问。
【讨论】:
我没有任何 Python 或 Django 经验,但我假设您可以在 Python 中创建 system call 之类的 tail 并传递详细信息。
从那里,我将使用 jQuery .ajax() 调用和 javascript setInterval() 循环到您的 Python 脚本,并将结果输出到网页上的 div。总体而言,这是一个非常简单的解决方案。
在这种情况下,您真的不需要使用打开的tail -f 系统调用,因为JS setInterval() 方法的性质,Python 脚本将被一遍又一遍地调用,直到JS clearInterval() 方法叫做。您将在 Python 或 JS 中聚合您的脚本详细信息,具体取决于您要在哪里进行工作。我建议使用 Python,因为您可以轻松获得更强大的功能,并且您可以通过 AJAX 调用发送更少的数据。从理论上讲,前端的 jQuery 代码中可能不需要太多的逻辑。只显示数据。
【讨论】: