diff --git a/apps/terminal/models/component/status.py b/apps/terminal/models/component/status.py index 279d6ac95..d273b9dac 100644 --- a/apps/terminal/models/component/status.py +++ b/apps/terminal/models/component/status.py @@ -53,7 +53,7 @@ class Status(models.Model): def save(self, force_insert=False, force_update=False, using=None, update_fields=None): - self.terminal.set_alive(ttl=120) + self.terminal.set_alive(ttl=60 * 3) return self.save_to_cache() def save_to_cache(self): diff --git a/apps/terminal/models/component/terminal.py b/apps/terminal/models/component/terminal.py index df09df680..88c2c6154 100644 --- a/apps/terminal/models/component/terminal.py +++ b/apps/terminal/models/component/terminal.py @@ -1,5 +1,3 @@ -import time - from django.conf import settings from django.core.cache import cache from django.db import models @@ -11,6 +9,7 @@ from common.utils import get_logger, lazyproperty from orgs.utils import tmp_to_root_org from terminal.const import TerminalType as TypeChoices from users.models import User +from .status import Status from ..session import Session logger = get_logger(__file__) @@ -23,7 +22,7 @@ class TerminalStatusMixin: @lazyproperty def last_stat(self): - return self.status_set.order_by('date_created').last() + return Status.get_terminal_latest_stat(self) @lazyproperty def load(self): @@ -32,11 +31,10 @@ class TerminalStatusMixin: @property def is_alive(self): - if not self.last_stat: - return False - return time.time() - self.last_stat.date_created.timestamp() < 150 + key = self.ALIVE_KEY.format(self.id) + return cache.get(key, False) - def set_alive(self, ttl=120): + def set_alive(self, ttl=60 * 3): key = self.ALIVE_KEY.format(self.id) cache.set(key, True, ttl) diff --git a/apps/terminal/utils/components.py b/apps/terminal/utils/components.py index 59d021186..a3de26322 100644 --- a/apps/terminal/utils/components.py +++ b/apps/terminal/utils/components.py @@ -1,6 +1,5 @@ # -*- coding: utf-8 -*- # -import time from itertools import groupby from common.utils import get_logger @@ -40,7 +39,7 @@ class ComputeLoadUtil: @classmethod def compute_load(cls, stat): - if not stat or time.time() - stat.date_created.timestamp() > 150: + if not stat: return ComponentLoad.offline system_status_values = cls._compute_system_stat_status(stat).values() if ComponentLoad.critical in system_status_values: