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

DB の GUI を使用すると、progress_info の値が常に更新されていることがわかります。ただし、 ajax 呼び出しは0、コマンドが終了するまでフロントエンドに戻り続けます (0 は の初期値ですprogress_info)。

DBまたはDjangoのロックメカニズムが原因だと思いますが、その理由は完全にはわかりません。誰でもそれを手伝ってもらえますか?どうもありがとう〜

4

0 に答える 0