From 7b1eea0e2035115af9a7f0e34de5348e78fc3fda Mon Sep 17 00:00:00 2001 From: caoqianming Date: Tue, 16 Apr 2024 13:22:45 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0check=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E7=A6=BB=E7=BA=BF=E7=9A=84=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/check_equipment_offline.py | 40 ++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 scripts/check_equipment_offline.py diff --git a/scripts/check_equipment_offline.py b/scripts/check_equipment_offline.py new file mode 100644 index 00000000..90646ee7 --- /dev/null +++ b/scripts/check_equipment_offline.py @@ -0,0 +1,40 @@ +import os +import sys +import django +import logging +from django.conf import settings +from django.core.cache import cache +from django.utils import timezone +import time + +CUR_DIR = os.path.dirname(os.path.abspath(__file__)) +BASE_DIR = os.path.dirname(CUR_DIR) +sys.path.insert(0, BASE_DIR) + +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "server.settings") +django.setup() + +from apps.em.models import Equipment, RuningState + + +def run(): + while True: + now = timezone.now() + equips = Equipment.objects.all() + for equip in equips: + is_online = 0 + cache_key = f"equipment_{equip.id}" + cache_value = cache.get(cache_key, None) + if cache_value: + last_timex = cache_value.get("running_state_timex", None) + if last_timex and (now - last_timex).total_seconds() <= 20: + is_online = 1 + if is_online == 0: + equip.is_online = 0 + equip.running_state = RuningState.UNKNOWN + equip.save(update_fields=["is_online", "running_state"]) + time.sleep(5) + + +if __name__ == "__main__": + run()