fix: objects.get_or_create 变更为safe_get_or_create用于解决并发冲突
This commit is contained in:
parent
7a6dc733f7
commit
7f4acd2370
|
@ -232,7 +232,7 @@ def cal_mpointstat_hour(mpointId: str, year: int, month: int, day: int, hour: in
|
||||||
# 更新更高级别的值
|
# 更新更高级别的值
|
||||||
if cascade or hour == 23:
|
if cascade or hour == 23:
|
||||||
params_day = {"type": "day", "mpoint": mpoint, "year": year, "month": month, "day": day}
|
params_day = {"type": "day", "mpoint": mpoint, "year": year, "month": month, "day": day}
|
||||||
ms_day, _ = MpointStat.objects.get_or_create(**params_day, defaults=params_day)
|
ms_day, _ = MpointStat.safe_get_or_create(**params_day, defaults=params_day)
|
||||||
if ms_day.val_correct is not None:
|
if ms_day.val_correct is not None:
|
||||||
ms_day.val = ms_day.val_correct
|
ms_day.val = ms_day.val_correct
|
||||||
else:
|
else:
|
||||||
|
@ -243,7 +243,7 @@ def cal_mpointstat_hour(mpointId: str, year: int, month: int, day: int, hour: in
|
||||||
|
|
||||||
if cascade or day in [28, 29, 30, 31]:
|
if cascade or day in [28, 29, 30, 31]:
|
||||||
params_month = {"type": "month", "mpoint": mpoint, "year": year, "month": month}
|
params_month = {"type": "month", "mpoint": mpoint, "year": year, "month": month}
|
||||||
ms_month, _ = MpointStat.objects.get_or_create(**params_month, defaults=params_month)
|
ms_month, _ = MpointStat.safe_get_or_create(**params_month, defaults=params_month)
|
||||||
if ms_month.val_correct is not None:
|
if ms_month.val_correct is not None:
|
||||||
ms_month.val = ms_month.val_correct
|
ms_month.val = ms_month.val_correct
|
||||||
else:
|
else:
|
||||||
|
@ -254,7 +254,7 @@ def cal_mpointstat_hour(mpointId: str, year: int, month: int, day: int, hour: in
|
||||||
|
|
||||||
if cascade or month == 12:
|
if cascade or month == 12:
|
||||||
params_year = {"type": "year", "mpoint": mpoint, "year": year}
|
params_year = {"type": "year", "mpoint": mpoint, "year": year}
|
||||||
ms_year, _ = MpointStat.objects.get_or_create(**params_year, defaults=params_year)
|
ms_year, _ = MpointStat.safe_get_or_create(**params_year, defaults=params_year)
|
||||||
if ms_year.val_correct is not None:
|
if ms_year.val_correct is not None:
|
||||||
ms_year.val = ms_year.val_correct
|
ms_year.val = ms_year.val_correct
|
||||||
else:
|
else:
|
||||||
|
@ -283,13 +283,13 @@ def cal_mpointstat_hour(mpointId: str, year: int, month: int, day: int, hour: in
|
||||||
"day_s": day_s,
|
"day_s": day_s,
|
||||||
"hour": hour,
|
"hour": hour,
|
||||||
}
|
}
|
||||||
ms_hour_s, _ = MpointStat.objects.get_or_create(**params_hour_s, defaults=params_hour_s)
|
ms_hour_s, _ = MpointStat.safe_get_or_create(**params_hour_s, defaults=params_hour_s)
|
||||||
ms_hour_s.val = ms_hour_s.val_correct if ms_hour_s.val_correct is not None else ms.val
|
ms_hour_s.val = ms_hour_s.val_correct if ms_hour_s.val_correct is not None else ms.val
|
||||||
ms_hour_s.save()
|
ms_hour_s.save()
|
||||||
|
|
||||||
# 开始往上计算
|
# 开始往上计算
|
||||||
params_sflog_s = {"type": "sflog", "mpoint": mpoint, "sflog": sflog, "year_s": year_s, "month_s": month_s, "day_s": day_s, "mgroup": mgroup}
|
params_sflog_s = {"type": "sflog", "mpoint": mpoint, "sflog": sflog, "year_s": year_s, "month_s": month_s, "day_s": day_s, "mgroup": mgroup}
|
||||||
ms_sflog_s, _ = MpointStat.objects.get_or_create(**params_sflog_s, defaults=params_sflog_s)
|
ms_sflog_s, _ = MpointStat.safe_get_or_create(**params_sflog_s, defaults=params_sflog_s)
|
||||||
if ms_sflog_s.val_correct is not None:
|
if ms_sflog_s.val_correct is not None:
|
||||||
ms_sflog_s.val = ms_sflog_s.val_correct
|
ms_sflog_s.val = ms_sflog_s.val_correct
|
||||||
else:
|
else:
|
||||||
|
@ -389,7 +389,7 @@ def cal_mpointstat_manual(mpointId: str, sflogId: str, mgroupId: str, year: int,
|
||||||
mgroup = Mgroup.objects.get(id=mgroupId)
|
mgroup = Mgroup.objects.get(id=mgroupId)
|
||||||
if sflogId:
|
if sflogId:
|
||||||
params_day_s = {"type": "day_s", "mpoint": mpoint, "year_s": year_s, "month_s": month_s, "day_s": day_s, "mgroup": mgroup}
|
params_day_s = {"type": "day_s", "mpoint": mpoint, "year_s": year_s, "month_s": month_s, "day_s": day_s, "mgroup": mgroup}
|
||||||
ms_day_s, _ = MpointStat.objects.get_or_create(**params_day_s, defaults=params_day_s)
|
ms_day_s, _ = MpointStat.safe_get_or_create(**params_day_s, defaults=params_day_s)
|
||||||
if ms_day_s.val_correct is not None:
|
if ms_day_s.val_correct is not None:
|
||||||
ms_day_s.val = ms_day_s.val_correct
|
ms_day_s.val = ms_day_s.val_correct
|
||||||
else:
|
else:
|
||||||
|
@ -400,7 +400,7 @@ def cal_mpointstat_manual(mpointId: str, sflogId: str, mgroupId: str, year: int,
|
||||||
|
|
||||||
if day_s:
|
if day_s:
|
||||||
params_month_s = {"type": "month_s", "mpoint": mpoint, "year_s": year_s, "month_s": month_s, "mgroup": mgroup}
|
params_month_s = {"type": "month_s", "mpoint": mpoint, "year_s": year_s, "month_s": month_s, "mgroup": mgroup}
|
||||||
ms_month_s, _ = MpointStat.objects.get_or_create(**params_month_s, defaults=params_month_s)
|
ms_month_s, _ = MpointStat.safe_get_or_create(**params_month_s, defaults=params_month_s)
|
||||||
if ms_month_s.val_correct is not None:
|
if ms_month_s.val_correct is not None:
|
||||||
ms_month_s.val = ms_month_s.val_correct
|
ms_month_s.val = ms_month_s.val_correct
|
||||||
else:
|
else:
|
||||||
|
@ -411,7 +411,7 @@ def cal_mpointstat_manual(mpointId: str, sflogId: str, mgroupId: str, year: int,
|
||||||
|
|
||||||
if month_s:
|
if month_s:
|
||||||
params_year_s = {"type": "year_s", "mpoint": mpoint, "year_s": year_s, "mgroup": mgroup}
|
params_year_s = {"type": "year_s", "mpoint": mpoint, "year_s": year_s, "mgroup": mgroup}
|
||||||
ms_year_s, _ = MpointStat.objects.get_or_create(**params_year_s, defaults=params_year_s)
|
ms_year_s, _ = MpointStat.safe_get_or_create(**params_year_s, defaults=params_year_s)
|
||||||
if ms_year_s.val_correct is not None:
|
if ms_year_s.val_correct is not None:
|
||||||
ms_year_s.val = ms_year_s.val_correct
|
ms_year_s.val = ms_year_s.val_correct
|
||||||
else:
|
else:
|
||||||
|
@ -472,7 +472,7 @@ def cal_enstat(type, sflogId, mgroupId, year, month, day, hour, year_s, month_s,
|
||||||
if team is None and type == "month_st":
|
if team is None and type == "month_st":
|
||||||
return year_s, month_s, day_s
|
return year_s, month_s, day_s
|
||||||
if type == "hour_s":
|
if type == "hour_s":
|
||||||
enstat, _ = EnStat.objects.get_or_create(
|
enstat, _ = EnStat.safe_get_or_create(
|
||||||
type="hour_s",
|
type="hour_s",
|
||||||
mgroup=mgroup,
|
mgroup=mgroup,
|
||||||
year=year,
|
year=year,
|
||||||
|
@ -482,19 +482,19 @@ def cal_enstat(type, sflogId, mgroupId, year, month, day, hour, year_s, month_s,
|
||||||
defaults={"type": "hour_s", "mgroup": mgroup, "year_s": year_s, "month_s": month_s, "day_s": day_s, "year": year, "month": month, "day": day, "hour": hour, "sflog": sflog},
|
defaults={"type": "hour_s", "mgroup": mgroup, "year_s": year_s, "month_s": month_s, "day_s": day_s, "year": year, "month": month, "day": day, "hour": hour, "sflog": sflog},
|
||||||
)
|
)
|
||||||
elif type == "sflog":
|
elif type == "sflog":
|
||||||
enstat, _ = EnStat.objects.get_or_create(type="sflog", sflog=sflog, defaults={"type": "sflog", "sflog": sflog, "mgroup": mgroup, "year_s": year_s, "month_s": month_s, "day_s": day_s})
|
enstat, _ = EnStat.safe_get_or_create(type="sflog", sflog=sflog, defaults={"type": "sflog", "sflog": sflog, "mgroup": mgroup, "year_s": year_s, "month_s": month_s, "day_s": day_s})
|
||||||
elif type == "day_s":
|
elif type == "day_s":
|
||||||
enstat, _ = EnStat.objects.get_or_create(
|
enstat, _ = EnStat.safe_get_or_create(
|
||||||
type="day_s", mgroup=mgroup, year_s=year_s, month_s=month_s, day_s=day_s, defaults={"type": "day_s", "mgroup": mgroup, "year_s": year_s, "month_s": month_s, "day_s": day_s}
|
type="day_s", mgroup=mgroup, year_s=year_s, month_s=month_s, day_s=day_s, defaults={"type": "day_s", "mgroup": mgroup, "year_s": year_s, "month_s": month_s, "day_s": day_s}
|
||||||
)
|
)
|
||||||
elif type == "month_st":
|
elif type == "month_st":
|
||||||
enstat, _ = EnStat.objects.get_or_create(
|
enstat, _ = EnStat.safe_get_or_create(
|
||||||
type="month_st", mgroup=mgroup, team=team, year_s=year_s, month_s=month_s, defaults={"type": "month_st", "mgroup": mgroup, "year_s": year_s, "month_s": month_s, "team": team}
|
type="month_st", mgroup=mgroup, team=team, year_s=year_s, month_s=month_s, defaults={"type": "month_st", "mgroup": mgroup, "year_s": year_s, "month_s": month_s, "team": team}
|
||||||
)
|
)
|
||||||
elif type == "month_s":
|
elif type == "month_s":
|
||||||
enstat, _ = EnStat.objects.get_or_create(type="month_s", mgroup=mgroup, year_s=year_s, month_s=month_s, defaults={"type": "month_s", "mgroup": mgroup, "year_s": year_s, "month_s": month_s})
|
enstat, _ = EnStat.safe_get_or_create(type="month_s", mgroup=mgroup, year_s=year_s, month_s=month_s, defaults={"type": "month_s", "mgroup": mgroup, "year_s": year_s, "month_s": month_s})
|
||||||
elif type == "year_s":
|
elif type == "year_s":
|
||||||
enstat, _ = EnStat.objects.get_or_create(type="year_s", mgroup=mgroup, year_s=year_s, defaults={"type": "year_s", "mgroup": mgroup, "year_s": year_s})
|
enstat, _ = EnStat.safe_get_or_create(type="year_s", mgroup=mgroup, year_s=year_s, defaults={"type": "year_s", "mgroup": mgroup, "year_s": year_s})
|
||||||
|
|
||||||
if "material" in this_cal_attrs:
|
if "material" in this_cal_attrs:
|
||||||
# 消耗物料统计(包括电耗)
|
# 消耗物料统计(包括电耗)
|
||||||
|
@ -806,9 +806,9 @@ def cal_enstat2(type: str, year_s: int, month_s: int, day_s: int, cascade=True):
|
||||||
else:
|
else:
|
||||||
return
|
return
|
||||||
if type == "month_s":
|
if type == "month_s":
|
||||||
enstat2, _ = EnStat2.objects.get_or_create(type="month_s", year_s=year_s, month_s=month_s, defaults={"year_s": year_s, "month_s": month_s, "type": "month_s"})
|
enstat2, _ = EnStat2.safe_get_or_create(type="month_s", year_s=year_s, month_s=month_s, defaults={"year_s": year_s, "month_s": month_s, "type": "month_s"})
|
||||||
elif type == "day_s":
|
elif type == "day_s":
|
||||||
enstat2, _ = EnStat2.objects.get_or_create(type="day_s", year_s=year_s, month_s=month_s, day_s=day_s, defaults={"year_s": year_s, "month_s": month_s, "day_s": day_s, "type": "day_s"})
|
enstat2, _ = EnStat2.safe_get_or_create(type="day_s", year_s=year_s, month_s=month_s, day_s=day_s, defaults={"year_s": year_s, "month_s": month_s, "day_s": day_s, "type": "day_s"})
|
||||||
# enstat2 = EnStat2.objects.select_for_update().get(id=enstat2.id) # 加锁
|
# enstat2 = EnStat2.objects.select_for_update().get(id=enstat2.id) # 加锁
|
||||||
try:
|
try:
|
||||||
material_bulk_clinker = Material.objects.get(code="bulk_clinker") # 散装熟料
|
material_bulk_clinker = Material.objects.get(code="bulk_clinker") # 散装熟料
|
||||||
|
@ -996,7 +996,7 @@ def enm_alarm(year_s: int, month_s: int, day_s: int):
|
||||||
from apps.ecm.service import notify_event
|
from apps.ecm.service import notify_event
|
||||||
|
|
||||||
now = timezone.now()
|
now = timezone.now()
|
||||||
event_cate, _ = EventCate.objects.get_or_create(code="consume_exceed", defaults={"name": "能耗超过目标值", "code": "consume_exceed", "trigger": 30})
|
event_cate, _ = EventCate.safe_get_or_create(code="consume_exceed", defaults={"name": "能耗超过目标值", "code": "consume_exceed", "trigger": 30})
|
||||||
for item in enm_alarms_list:
|
for item in enm_alarms_list:
|
||||||
mgroups = Mgroup.objects.filter(name=item[0])
|
mgroups = Mgroup.objects.filter(name=item[0])
|
||||||
for mgroup in mgroups:
|
for mgroup in mgroups:
|
||||||
|
@ -1027,7 +1027,7 @@ def enm_alarm(year_s: int, month_s: int, day_s: int):
|
||||||
"enstat": enstat.id
|
"enstat": enstat.id
|
||||||
}
|
}
|
||||||
event.save()
|
event.save()
|
||||||
Eventdo.objects.get_or_create(cate=event_cate, event=event, defaults={"cate": event_cate, "event": event})
|
Eventdo.safe_get_or_create(cate=event_cate, event=event, defaults={"cate": event_cate, "event": event})
|
||||||
notify_event(event)
|
notify_event(event)
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue