From 68e16d18fe9044fae2cbe9102cfe6bf401ce475c Mon Sep 17 00:00:00 2001 From: jxxghp Date: Wed, 18 Oct 2023 12:36:46 +0800 Subject: [PATCH] fix #909 --- app/plugins/autosignin/__init__.py | 5 ++--- app/utils/timer.py | 7 +++++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/app/plugins/autosignin/__init__.py b/app/plugins/autosignin/__init__.py index 5ef68b51..c396f051 100644 --- a/app/plugins/autosignin/__init__.py +++ b/app/plugins/autosignin/__init__.py @@ -14,7 +14,6 @@ from ruamel.yaml import CommentedMap from app import schemas from app.core.config import settings from app.core.event import EventManager, eventmanager, Event -from app.db.models.site import Site from app.db.site_oper import SiteOper from app.helper.browser import PlaywrightHelper from app.helper.cloudflare import under_challenge @@ -180,8 +179,8 @@ class AutoSignIn(_PluginBase): triggers = TimerUtils.random_scheduler(num_executions=2, begin_hour=9, end_hour=23, - max_interval=12 * 60, - min_interval=6 * 60) + max_interval=6 * 60, + min_interval=2 * 60) for trigger in triggers: self._scheduler.add_job(self.sign_in, "cron", hour=trigger.hour, minute=trigger.minute, diff --git a/app/utils/timer.py b/app/utils/timer.py index 49819e76..7e4f76e3 100644 --- a/app/utils/timer.py +++ b/app/utils/timer.py @@ -28,10 +28,13 @@ class TimerUtils: # 随机生成下一个任务的时间间隔 interval_minutes = random.randint(min_interval, max_interval) random_interval = datetime.timedelta(minutes=interval_minutes) + # 记录上一个任务的时间触发器 + last_random_trigger = random_trigger # 更新当前时间为下一个任务的时间触发器 random_trigger += random_interval - # 达到结束时间时退出 - if random_trigger.hour > end_hour: + # 达到结束时间或者时间出现倒退时退出 + if random_trigger.hour > end_hour \ + or random_trigger.hour < last_random_trigger.hour: break # 添加到队列 trigger.append(random_trigger)