Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 21 additions & 11 deletions ruoyi-fastapi-backend/config/get_scheduler.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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:
"""
Expand Down Expand Up @@ -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('✅️ 系统初始定时任务加载成功')

Expand Down