我创建了一个Python脚本,用于监视日志文件的变化(如tail -f)并将其显示在控制台上。我想在web浏览器中访问Python脚本的输出。我需要什么来创建这个?我正在考虑使用Django和jQuery。任何提示或例子,不胜感激。在浏览器中使用tail -f
回答
首先创建一个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);
您还可以创建回调错误和超时报告服务器的问题。
我没有任何Python或Django的经验,但我假设你可以在Python中制作system call,如tail
,并转发细节。
从那里,我会使用一个jQuery .ajax()
调用一个JavaScript setInterval()
循环到您的Python脚本,并将结果输出到网页上的div。总的来说一个非常简单的解
在这种情况下,你真的不会需要使用一个开放的tail -f
系统调用,因为JS setInterval()
方法的性质,Python脚本将被调用一遍又一遍,直到JS clearInterval()
方法被调用。您将根据您要执行工作的位置将脚本细节汇总为Python或JS。我会建议Python,因为您可以在指尖上使用更强大的功能,并且您可以通过AJAX调用发送更少的数据。理论上,前端jQuery代码中可能不需要太多的逻辑。只显示数据。
为什么你不将数据输出到一个HTML文件?你可以运行一个cron作业来运行你的脚本,然后再创建一个可以从浏览器访问的HTML文件。
我的脚本已经可以输出HTML,但我不想'刷新'每X秒完成一次页面。 – compie 2010-05-14 19:36:50
- 1. tail -f使用PuTTY挂起
- 2. 在C++中实现“tail -f”
- 3. “tail -f”会使磁盘满?
- 4. Combine tail -F和json
- 5. Java“tail -f”包装
- 6. tail -F log.log | grep ResponseTime |切-d = -f 2
- 7. 如何在Java中使用远程Unix系统“tail -f”文件?
- 8. 如何在浏览器中使用网页浏览器控件?
- 9. 'tail -f'数据库表
- 10. “tail -f filename”的Web实现?
- 11. 理解“在蟒蛇的tail -f”
- 12. 如何使用浏览器控件在图像中查找文本+ F
- 13. 仅在浏览器中使用xpages
- 14. 使用Java在浏览器中书写
- 15. 在jQuery中使用浏览器历史
- 16. 在Visual Basic中使用IE浏览器
- 17. 在Jasmine和浏览器中使用btoa
- 18. HTML 5使用在桌面浏览器和手机浏览器
- 19. 从浏览器中获取JavaScript版本=在asp.net中使用IE浏览器
- 20. 在Chrome浏览器和/或Safari浏览器中启用XSS
- 21. 如何禁用浏览器浏览器?
- 22. 用户Agnet(浏览器/浏览器)Progmatically
- 23. 在浏览器中使用浏览器时,ASP.NET未加载ASP.NET网站
- 24. 使用Web浏览器
- 25. http-conduit浏览器使用
- 26. 使用web浏览器
- 27. 使用浏览器编程
- 28. VB.NET使用浏览器
- 29. 使用浏览器徽标
- 30. 在浏览器
要澄清一点,setTimeout()函数只会在2000毫秒后调用一次doUpdate()。它不会创建一个循环。如果你想循环,你需要将setTimeout调用移到doUpdate()函数中,很可能在最后,或将其更改为setInterval()。下面是两个JS函数的一个很好的比较:http://javascript.about.com/library/blstvsi.htm – gurun8 2010-05-15 04:32:03
你是对的,setTimeout必须移入doUpdate。 – kgiannakakis 2010-05-15 08:11:08