feat: add retry times and backup users

This commit is contained in:
engigu
2026-02-28 14:44:32 +08:00
parent 06cdc58a72
commit 69cb727b87
15 changed files with 175 additions and 46 deletions
+22 -1
View File
@@ -72,7 +72,13 @@ type ExecutionRequest struct {
Timeout int // 超时时间(分钟)
Languages []map[string]string // 语言环境配置
UseMise bool // 是否使用 mise
Metadata map[string]interface{} // 额外元数据
Metadata ExecutionMetadata // 额外元数据
}
// ExecutionMetadata 执行额外元数据
type ExecutionMetadata struct {
GoID int64 // 关联的 goroutine ID
RetryIndex int // 当前重试索引
}
// ExecutionResult 执行结果(标准接口)
@@ -275,6 +281,21 @@ func (s *Scheduler) EnqueueOrExecute(req *ExecutionRequest) {
}
}
// EnqueueDelayed 延迟将任务加入队列执行
func (s *Scheduler) EnqueueDelayed(delay time.Duration, reqBuilder func() *ExecutionRequest) {
go func() {
select {
case <-time.After(delay):
if req := reqBuilder(); req != nil {
s.EnqueueOrExecute(req)
}
case <-s.stopCh:
// 调度器停止时取消延迟投递
return
}
}()
}
// ExecuteSync 同步执行任务(不经过队列)
func (s *Scheduler) ExecuteSync(req *ExecutionRequest) (*ExecutionResult, error) {
return s.executeTask(req)