From b6fe2a61e21e0e4eb521905e8a24e39bf8a24581 Mon Sep 17 00:00:00 2001 From: insistence <3055204202@qq.com> Date: Thu, 12 Feb 2026 15:44:29 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E7=83=AD=E9=87=8D?= =?UTF-8?q?=E8=BD=BD=E6=A8=A1=E5=BC=8F=E6=88=96=E5=8D=95worker=E4=B8=8Bsch?= =?UTF-8?q?eduler=E7=9A=84=E4=BB=BB=E5=8A=A1=E7=8A=B6=E6=80=81=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=E6=9C=BA=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-fastapi-backend/config/get_scheduler.py | 32 ++++++++++++------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/ruoyi-fastapi-backend/config/get_scheduler.py b/ruoyi-fastapi-backend/config/get_scheduler.py index 3b08ff8..a60f31c 100644 --- a/ruoyi-fastapi-backend/config/get_scheduler.py +++ b/ruoyi-fastapi-backend/config/get_scheduler.py @@ -30,7 +30,7 @@ create_sync_db_engine, create_sync_session_local, ) -from config.env import LogConfig, RedisConfig +from config.env import AppConfig, LogConfig, RedisConfig from module_admin.dao.job_dao import JobDao from module_admin.entity.vo.job_vo import JobLogModel, JobModel from module_admin.service.job_log_service import JobLogService @@ -189,6 +189,15 @@ def _configure_scheduler(cls) -> None: scheduler.configure(jobstores=job_stores, executors=executors, job_defaults=job_defaults) cls._scheduler_configured = True + @classmethod + def _should_enable_scheduler_sync(cls) -> bool: + """ + 判断是否需要启用多 worker 的任务状态同步机制 + + :return: 是否开启定时同步与监听 + """ + return not AppConfig.app_reload and AppConfig.app_workers > 1 + @classmethod async def init_system_scheduler(cls, redis: aioredis.Redis) -> None: """ @@ -237,16 +246,17 @@ async def _start_scheduler_as_leader(cls, redis: aioredis.Redis) -> None: # 添加事件监听器 scheduler.add_listener(cls.scheduler_event_listener, EVENT_ALL) - # 添加任务状态同步任务(每30秒从数据库同步一次任务状态) - scheduler.add_job( - func=cls.request_scheduler_sync, - trigger='interval', - seconds=30, - id='_scheduler_job_sync', - name='Scheduler任务同步', - replace_existing=True, - ) - cls._sync_listener_task = asyncio.create_task(cls._listen_sync_channel(redis)) + if cls._should_enable_scheduler_sync(): + # 添加任务状态同步任务(每30秒从数据库同步一次任务状态) + scheduler.add_job( + func=cls.request_scheduler_sync, + trigger='interval', + seconds=30, + id='_scheduler_job_sync', + name='Scheduler任务同步', + replace_existing=True, + ) + cls._sync_listener_task = asyncio.create_task(cls._listen_sync_channel(redis)) logger.info('✅️ 系统初始定时任务加载成功')