| Server IP : 170.10.162.208 / Your IP : 216.73.216.38 Web Server : LiteSpeed System : Linux altar19.supremepanel19.com 4.18.0-553.69.1.lve.el8.x86_64 #1 SMP Wed Aug 13 19:53:59 UTC 2025 x86_64 User : deltahospital ( 1806) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /opt/imunify360/venv/lib64/python3.11/site-packages/defence360agent/api/ |
Upload File : |
"""This module implement inactivity tracker for ImunifyAV to automaticaly
shutdown the process when it is idle for certain time (no RPC calls and
long running tasks).
"""
import time
from contextlib import contextmanager, suppress
from logging import getLogger
logger = getLogger(__name__)
class InactivityTracker:
def __init__(self):
self._last_action_timestamp = time.monotonic()
self._long_action_counter = 0
self._long_actions_list = []
self._timeout = 0
def __str__(self):
return "Time from last action is {:.0f}, long actions {}".format(
time.monotonic() - self._last_action_timestamp,
self._long_actions_list,
)
@contextmanager
def task(self, name):
self.start(name)
try:
yield
finally:
self.stop(name)
def reset_timer(self):
self._last_action_timestamp = time.monotonic()
def start(self, name):
self._long_action_counter += 1
self._long_actions_list.append(name)
self.reset_timer()
def stop(self, name):
self._long_action_counter -= 1
with suppress(ValueError):
self._long_actions_list.remove(name)
self.reset_timer()
def is_timeout(self):
return (not self._long_action_counter) and (
self._last_action_timestamp + self._timeout <= time.monotonic()
)
def set_timeout(self, timeout: int) -> None:
self._timeout = timeout
track = InactivityTracker()