1

我正在使用 Django 实现进度监控功能。但是,我无法在前端获取更新的值。

执行 Django 管理命令popen以不断更新webscan. Scan 是一个 Django 模型,progress_info是模型的一个属性,保存在数据库中。代码如下:

            d = 10
            while (d) :
                time.sleep(10)
                try:
                    isBusy = server.call("framework.busy?")
                    logging.debug(isBusy)
                    if isBusy.strip() == 'true':
                        progress = webscan.progress
                        webscan.progress_info = progress
                        webscan.save()
                        logging.debug("%s"%progress)
                    else:
                        d = 0
                except Exception as e:
                    logging.debug("In an exception when calling busy. Exception: %s and Type %s"%(e, type(e)))
                    d -= 1

在前端,我进行 ajax 调用以获取progress_info. 处理程序只需获取 的值webscan.progress_info并将其返回给前端。代码如下:

@property
def get_progress(self):
    return self.progress_info

使用数据库的 GUI,我可以看到 progress_info 的值保持更新。但是,ajax 调用会一直返回0到前端,直到命令完成(0 是 的初始值progress_info)。

我猜这是因为 DB 或 Django 的锁定机制,但不完全明白为什么。有人可以帮我吗?非常感谢~

4

0 回答 0