Merge branch 'master' of https://e.coding.net/ctcdevteam/ehs/ehs_server
This commit is contained in:
commit
58ddc8dd0b
|
@ -9,31 +9,31 @@ from apps.utils.tasks import ctask_run
|
|||
import logging
|
||||
from apps.mtm.services import mgroup_run_change
|
||||
myLogger = logging.getLogger("log")
|
||||
baseTime = datetime.datetime(year=1990, month=4, day=4, hour=0, minute=0, second=0, tzinfo=tz.gettz(settings.TIME_ZONE))
|
||||
|
||||
def get_eq_rs(equipId: str):
|
||||
"""获取设备运行状态缓存
|
||||
"""
|
||||
return cache.get(f"equipment_{equipId}", {"update_num":0, "running_state": Equipment.OFFLINE, "running_state_timex": datetime.datetime(year=1990, month=4, day=4, hour=0, minute=0, second=0, tzinfo=tz.gettz(settings.TIME_ZONE))})
|
||||
return cache.get(f"equipment_{equipId}", {"update_time":baseTime, "running_state": Equipment.OFFLINE, "running_state_timex": baseTime})
|
||||
|
||||
def set_eq_rs(equipId, last_timex: datetime, last_mrs: int):
|
||||
"""更新设备运行状态(包括缓存和数据库)
|
||||
"""
|
||||
if last_mrs == Equipment.OFFLINE: # 如果是离线直接更新
|
||||
cache.set(f"equipment_{equipId}", {"running_state": last_mrs, "running_state_timex": last_timex, "update_num":0}, timeout=None) # 更新缓存
|
||||
cache.set(f"equipment_{equipId}", {"running_state": last_mrs, "running_state_timex": last_timex, "update_time":baseTime}) # 更新缓存
|
||||
Equipment.objects.filter(id=equipId).update(running_state=last_mrs) # 更新数据库
|
||||
else:
|
||||
eq_rs_cache = get_eq_rs(equipId)
|
||||
|
||||
eq_rs_change = False
|
||||
ten_minutes = datetime.timedelta(minutes=10)
|
||||
now = datetime.datetime.now()
|
||||
if eq_rs_cache["running_state"] != last_mrs: # 如果状态变动了要调用方法否则只需更新缓存
|
||||
eq_rs_change = True
|
||||
update_num = 0
|
||||
elif eq_rs_cache.get('update_num', 0) >= 10: # 如果状态没有变动但是更新次数大于20次也要调用方法
|
||||
update_time = now
|
||||
elif now > eq_rs_cache.get('update_time', baseTime) + ten_minutes: # 如果当前时间大于缓存时间5分钟则更新
|
||||
eq_rs_change = True
|
||||
update_num = 0
|
||||
else:
|
||||
update_num = eq_rs_cache.get('update_num', 0) + 1
|
||||
cache.set(f"equipment_{equipId}", {"running_state": last_mrs, "running_state_timex": last_timex, "update_num":update_num}, timeout=None) # 更新缓存
|
||||
update_time = now
|
||||
cache.set(f"equipment_{equipId}", {"running_state": last_mrs, "running_state_timex": last_timex, "update_time":update_time}, timeout=None) # 更新缓存
|
||||
if eq_rs_change:
|
||||
ctask_run.delay("apps.em.services.shutdown_or_startup", equipId, last_timex, last_mrs)
|
||||
|
||||
|
|
Loading…
Reference in New Issue