diff --git a/internal/controllers/settings_controller.go b/internal/controllers/settings_controller.go index 7f6c680..99ce07b 100644 --- a/internal/controllers/settings_controller.go +++ b/internal/controllers/settings_controller.go @@ -293,6 +293,24 @@ func (sc *SettingsController) UpdateSchedulerSettings(c *gin.Context) { return } + var workerCount int + if _, err := fmt.Sscanf(req.WorkerCount, "%d", &workerCount); err != nil || workerCount < 1 || workerCount > 1000 { + utils.BadRequest(c, "工作线程数必须在 1 至 1000 之间") + return + } + + var queueSize int + if _, err := fmt.Sscanf(req.QueueSize, "%d", &queueSize); err != nil || queueSize < 1 || queueSize > 50000 { + utils.BadRequest(c, "等待队列容量必须在 1 至 50000 之间") + return + } + + var rateInterval int + if _, err := fmt.Sscanf(req.RateInterval, "%d", &rateInterval); err != nil || rateInterval < 1 { + utils.BadRequest(c, "限频间隔必须为正整数") + return + } + values := map[string]string{ constant.KeyWorkerCount: req.WorkerCount, constant.KeyQueueSize: req.QueueSize, diff --git a/internal/executor/scheduler.go b/internal/executor/scheduler.go index 4c7bf3b..7c11289 100644 --- a/internal/executor/scheduler.go +++ b/internal/executor/scheduler.go @@ -208,9 +208,15 @@ func NewScheduler(config SchedulerConfig, handler SchedulerEventHandler) *Schedu if config.WorkerCount <= 0 { config.WorkerCount = 4 } + if config.WorkerCount > 1000 { + config.WorkerCount = 1000 + } if config.QueueSize <= 0 { config.QueueSize = 100 } + if config.QueueSize > 50000 { + config.QueueSize = 50000 + } if config.RateInterval <= 0 { config.RateInterval = 200 * time.Millisecond }