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)