调度器推迟基建以外的任务
All checks were successful
ci/woodpecker/push/check_format Pipeline was successful

This commit is contained in:
zhbaor 2025-01-09 22:39:20 +08:00
parent c5316b4dda
commit 94046f8692
2 changed files with 13 additions and 5 deletions

View file

@ -436,6 +436,9 @@ class SchedulerPart(ConfModel):
"mower.solvers.sss.SSSSolver": True, "mower.solvers.sss.SSSSolver": True,
"mower.solvers.rogue.RogueSolver": True, "mower.solvers.rogue.RogueSolver": True,
} }
"启用任务"
postpone_non_riic: bool = True
"将基建以外的任务推迟到基建任务后执行"
class SKLandPart(ConfModel): class SKLandPart(ConfModel):

View file

@ -175,15 +175,13 @@ class Scheduler:
insort(self.time_queue, task) insort(self.time_queue, task)
def update_queue(self): def update_queue(self):
tasks = self.priority_queue tasks, self.priority_queue = self.priority_queue, []
self.priority_queue = []
for task in tasks: for task in tasks:
if config.conf.task[task.solver]: if config.conf.task[task.solver]:
self.priority_queue.append(task) self.priority_queue.append(task)
else: else:
insort(self.time_queue, task) insort(self.time_queue, task)
tasks = self.time_queue tasks, self.time_queue = self.time_queue, []
self.time_queue = []
for task in tasks: for task in tasks:
if config.conf.task[task.solver] and task.next_execution() <= now: if config.conf.task[task.solver] and task.next_execution() <= now:
insort(self.priority_queue, task) insort(self.priority_queue, task)
@ -258,7 +256,14 @@ class Scheduler:
insort(self.time_queue, next_task) insort(self.time_queue, next_task)
else: else:
# 如果没有需要立即执行的任务,休息 # 如果没有需要立即执行的任务,休息
next_time = next(self.waiting_tasks).next_execution() for next_task in self.waiting_tasks:
if (
not config.conf.postpone_non_riic
or next_task.solver
== "mower.solvers.base_manager.BaseManager"
):
break
next_time = next_task.next_execution()
sleep_time = next_time - now sleep_time = next_time - now
sleep_time_display = format_time(sleep_time.total_seconds()) sleep_time_display = format_time(sleep_time.total_seconds())
if sleep_time > timedelta(minutes=3): if sleep_time > timedelta(minutes=3):