我已经创建了一个Python脚本,用于监视日志文件的更改(如tail -f),并将其显示在控制台上。我想在the浏览器中访问Python脚本的输出。要创建这个,我需要什么?我在考虑使用Django和jQuery。任何技巧或例子都是非常感谢的。
发布于 2010-05-15 04:14:59
首先,创建一个python脚本,用于监视日志文件的更改。如果你只是出于调试-测试的目的而需要它,那么使用Django或其他web框架就太过分了。使用套接字实现Http Web服务器功能非常容易。每当Http GET请求到来时,只处理与不同请求不同的请求。为了实现这一点,您需要在内存中存储每个请求的状态(文件中最后一行的e.g.number)。
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);您还可以为错误和超时创建回调,以报告服务器问题。
发布于 2010-05-15 03:19:11
我没有任何Python或Django的经验,但我假设你可以用Python语言制作一个像tail这样的system call,并传递细节。
在那里,我将使用一个带有javascript setInterval()循环的jQuery .ajax()调用到您的Python脚本,并将结果输出到网页上的一个div。总的来说,这是一个非常简单的解决方案。
在本例中,您实际上不需要使用open系统调用,因为由于JS setInterval()方法的性质,Python脚本将被反复调用,直到JS clearInterval()方法被调用为止。您将在Python或JS中聚合脚本详细信息,具体取决于您希望在何处完成工作。我建议使用Python,因为这样可以让您拥有更健壮的特性,并且通过AJAX调用发送的数据会更少。从理论上讲,前端的jQuery代码可能不需要太多的逻辑。只显示数据即可。
发布于 2010-05-15 03:30:17
为什么不把数据输出到HTML文件中呢?您可以运行一个cron作业来运行您的脚本,该脚本将弹出一个HTML文件,可以从浏览器访问该文件。
https://stackoverflow.com/questions/2836838
复制相似问题