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

Javascript Ajax实时更新系统操作的进度,javascript,jquery,python,django,Javascript,Jquery,Python,Django,我正在为一个大型Python脚本编写一个基于web的GUI界面,该脚本用于探测服务器上的一些活动。虽然应用程序本身很轻,但我使用Django来创建web GUI,因为我可以重用许多已经内置的功能,例如用户管理等 我有一个函数,它执行许多逻辑步骤、检查和复制文件。在vanilla程序中,我们使用一个日志文件来捕获所有状态。客户需要一个页面,实时显示每个步骤的状态变化 正确的策略是什么。采取了哪些步骤?进度条不是我所需要的,它更像是一个实时的进度报告?您可以建议要采取的步骤或指向任何教程吗?您需要定

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

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


正确的策略是什么。采取了哪些步骤?进度条不是我所需要的,它更像是一个实时的进度报告?您可以建议要采取的步骤或指向任何教程吗?您需要定期从浏览器轮询后端以查看是否有任何更新。这确实假设长时间运行的脚本是异步运行的。定期更新类似于日志文件尾部,偶尔检查日志中是否添加了新信息

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


基本上,有了这样一个插件,您将需要一个Django视图来返回当前状态,可以说是流程的日志文件输出,并让PeriodicalUpdater轮询该视图。当然,在PeriodicalUpdater的回调函数中,您需要添加一个检查,以确保流程已完成;也许您的服务器视图可以在“日志”的末尾以一个易于检测的“Process complete”行结束,或者返回一个只包含最终状态的响应。

请参阅此函数通常执行大约10个步骤,如复制文件、更改权限等,我想了解这是否成功完成。整个过程最多需要3分钟,我需要一个ajax插件来更新每个状态,然后停止宣布功能结束。这是一种进度条,但如果成功或出现问题,则会更新每个步骤并提供绿色标记。然后,进度视图会返回预先呈现的带有复选标记的步骤,当步骤完成时,轮询仍将调用它。