diff --git a/mqttc.py b/mqttc.py index a299740..c963133 100644 --- a/mqttc.py +++ b/mqttc.py @@ -30,6 +30,7 @@ logging.basicConfig(level=getattr(logging, conf.LOG_LEVEL.upper(), logging.INFO) logger = logging.getLogger(__name__) engine:Engine = None +mpoint_dict = {} # {"mpoint_id": last_timex} def send_error_email(message, subject='hfnf_mqtt', ): msg = MIMEMultipart() @@ -52,6 +53,9 @@ def save_items(payload): for item in item_list: data['timex'] = datetime.strptime(item['time'], "%Y%m%d%H%M%S").replace(tzinfo=tz.gettz('Asia/Shanghai')) data['mpoint_id'] = item['name'] + last_timex: datetime = mpoint_dict.get(data['mpoint_id'], None) + if last_timex and (data['timex'] - last_timex).total_seconds() < getattr(conf, 'SAVE_SECONDS', 50): + continue try: val_float = float(item["value"]) data["val_float"] = val_float @@ -68,6 +72,7 @@ def save_items(payload): logger.error(f"{data['mpoint_id']}-保存数据失败", exc_info=True) Thread(target=send_error_email, args=(f"{data['mpoint_id']}-保存数据失败-{e}",)).start() conn.commit() + mpoint_dict[data['mpoint_id']] = data['timex']