Server IP : 66.29.132.122 / Your IP : 3.135.212.183 Web Server : LiteSpeed System : Linux business142.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64 User : admazpex ( 531) PHP Version : 7.2.34 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /opt/imunify360/venv/lib/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 {}, 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()