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