Ajax更新系统操作的实时进度

时间:2012-07-09 07:15:02

标签: javascript jquery python django

我正在为一个用于检测服务器上的一些活动的大型Python脚本编写基于Web的GUI界面。虽然应用程序本身非常轻,但我使用Django来创建Web GUI,因为我可以重用许多已经内置的功能,例如用户管理等。

我有一个功能,需要多个逻辑步骤,检查,复制文件。在vanilla程序中,我们使用日志文件来捕获所有状态。客户需要一个页面,其中显示每个步骤的实时状态变化。

什么是正确的策略。采取了哪些步骤?一个progess bar不是我需要的,它更像是一个实时的进度报告?您能否告知要采取的步骤或指向任何教程

1 个答案:

答案 0 :(得分:1)

您需要定期从浏览器轮询后端以查看是否有任何更新。这确实假设长时间运行的脚本异步运行。定期更新类似于日志文件尾部,偶尔检查是否已将新信息添加到日志中。

有几个现有的jQuery插件可以帮助你构建它; PeriodicalUpdater for jQuery是一个很好的,因为如果服务器响应在一段时间内没有改变,它将调整轮询间隔。

基本上,使用这样的插件,你需要一个Django视图,它返回当前状态,你的进程的日志文件输出可以这么说,并让PeriodicalUpdater轮询该视图。在PeriodicalUpdater的回调函数中,您需要添加一个过程完成的检查,当然;也许您的服务器视图可以在“日志”结尾处以易于检测的“处理完成”行结束,或者返回包含最终状态的响应。