2012-07-09 49 views
0

我正在为一个用于在服务器上测试几个活动的大型Python脚本编写基于Web的GUI界面。虽然应用程序本身的重量非常轻,但我使用Django来创建Web GUI,因为我可以重用很多已经内置的功能,例如用户管理等。Ajax更新系统操作的实时进度

我有一个函数,它需要一些逻辑步骤,检查,复制文件。在vanilla程序中,我们使用日志文件来捕获所有状态。客户希望实时显示每个步骤的状态更改的页面。

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

回答

1

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

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

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

+0

查看该功能通常会执行大约10个步骤,如复制文件,更改权限等,并且我想捕获这是否成功完成。整个过程最多需要3分钟,我需要一个ajax插件来更新每个状态,然后停止宣布该功能结束。这是一种进度条,但是如果它成功或出了问题,则更新每一步并提供一个绿色标记。 – ramdaz 2012-07-09 09:05:39

+0

然后,您的进度视图返回那些步骤完成时用复选标记预渲染的步骤,轮询仍然需要调用它。 – 2012-07-09 09:08:41