mirror of
https://github.com/0O0o0oOoO00/Alas.git
synced 2026-05-14 14:59:25 +08:00
adj: separate the settings of the scheduler watcher
This commit is contained in:
@@ -31,17 +31,20 @@ class SchedulerWatcher:
|
||||
def __init__(self):
|
||||
self.alas_obj = None
|
||||
self.watcher: threading.Thread = None
|
||||
self.warning_count = Counter(3)
|
||||
self.warning_count = None
|
||||
self.warning_time = None
|
||||
self.current_task = None
|
||||
self.min_timedelta = None
|
||||
|
||||
def set_alas_obj(self, alas_obj):
|
||||
self.alas_obj = alas_obj
|
||||
|
||||
def start_watch(self):
|
||||
def start_watch(self, min_timedelta, max_warning_count):
|
||||
if self.watcher is not None:
|
||||
if self.watcher.is_alive():
|
||||
return
|
||||
self.min_timedelta = datetime.timedelta(minutes=min_timedelta)
|
||||
self.warning_count = Counter(max_warning_count)
|
||||
logger.info(f"Scheduler watcher start")
|
||||
self.watcher = threading.Thread(target=self.watcher_thread, daemon=True)
|
||||
self.watcher.start()
|
||||
@@ -52,11 +55,11 @@ class SchedulerWatcher:
|
||||
now = datetime.datetime.now()
|
||||
if self.warning_count.current_count > 0:
|
||||
self.warning_count.reset()
|
||||
self.warning_time = now + datetime.timedelta(minutes=10)
|
||||
self.warning_time = now + self.min_timedelta
|
||||
logger.info(f"Current task requests to extend the task deadline")
|
||||
else:
|
||||
if self.warning_time - now < datetime.timedelta(minutes=3):
|
||||
self.warning_time = now + datetime.timedelta(minutes=10)
|
||||
self.warning_time = now + self.min_timedelta
|
||||
logger.info(f"Current task requests to extend the task deadline")
|
||||
|
||||
def no_task(self):
|
||||
@@ -70,7 +73,7 @@ class SchedulerWatcher:
|
||||
return
|
||||
self.current_task = task
|
||||
self.warning_count.reset()
|
||||
self.warning_time = datetime.datetime.now() + datetime.timedelta(minutes=10)
|
||||
self.warning_time = datetime.datetime.now() + self.min_timedelta
|
||||
|
||||
def watcher_thread(self):
|
||||
while 1:
|
||||
@@ -83,7 +86,7 @@ class SchedulerWatcher:
|
||||
try:
|
||||
self.warning_count.count_once()
|
||||
logger.warning(f"Current task reached time limit once")
|
||||
self.warning_time = now + datetime.timedelta(minutes=10)
|
||||
self.warning_time = now + self.min_timedelta
|
||||
except CounterReachMaxCountException:
|
||||
logger.error(f"Current task reached final time limit, assuming the scheduler is stuck")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user