From 64bdd721466d13ca3e425d7e33929791394bec82 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Sat, 15 Apr 2023 17:32:58 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20snap=5Fand=5Fanalyse=E6=97=B6=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/ecm/service.py | 15 +++++++++++---- apps/ecm/tasks.py | 2 +- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/apps/ecm/service.py b/apps/ecm/service.py index 5a10ec47..cabaf5fd 100644 --- a/apps/ecm/service.py +++ b/apps/ecm/service.py @@ -603,16 +603,23 @@ def get_area_from_point(x: int, y: int, floorNo: str, area_fix_id): def snap_and_analyse(vchannel: TDevice, algo_codes: list, opl: Opl = None): global_img_o = dhClient.snap(vchannel.code, raise_exception=False) happen_time = timezone.now() + ckey = 'vchannel_' + vchannel.id + cvalue = cache.get(ckey, {}) if global_img_o is None: # 说明视频抓拍失败 - ckey = 'vchannel_' + vchannel.id - cvalue = cache.get(ckey, None) if cvalue: try: - cvalue.update({'snap': 'fail', 'snap_time': datetime.strftime("%Y-%m-%d %H:%M:%S")}) - cache.set(ckey, cvalue) + cvalue.update({'snap': 'fail', 'snap_time': datetime.now().strftime("%Y-%m-%d %H:%M:%S")}) + cache.set(ckey, cvalue, timeout=60) except: pass return + else: + if cvalue: + try: + cvalue.update({'snap': 'success', 'snap_time': datetime.now().strftime("%Y-%m-%d %H:%M:%S")}) + cache.set(ckey, cvalue, timeout=60) + except: + pass ec_codes = ai_analyse_2(algo_codes, global_img=global_img_o) # 算法处理返回的事件结果 if ec_codes: # 获取本次所有发生事件种类 diff --git a/apps/ecm/tasks.py b/apps/ecm/tasks.py index 6458f58b..20b4ec8c 100644 --- a/apps/ecm/tasks.py +++ b/apps/ecm/tasks.py @@ -137,7 +137,7 @@ def monitor_check(vc_ids = []): ckey = 'vchannel_' + vc.id if algo_codes: tid = str(uuid.uuid4()) - cache.set(ckey, {'id': tid, 'algo_codes': algo_codes, 'start_time': datetime.strftime("%Y-%m-%d %H:%M:%S")}) + cache.set(ckey, {'id': tid, 'algo_codes': algo_codes, 'start_time': datetime.now().strftime("%Y-%m-%d %H:%M:%S")}, timeout=60) Thread(target=loop_and_analyse, args=(vc, tid), daemon=True).start() else: cache.delete(ckey)