This commit is contained in:
2026-08-16 09:02:39 +08:00
parent c554152f4f
commit f7f6db8695
105 changed files with 2535 additions and 948 deletions
+9 -17
View File
@@ -25,7 +25,9 @@ type TaskExecutor struct {
}
func NewTaskExecutor(tasks *biz.TaskUsecase, media *biz.MediaUsecase, runtime *conf.Runtime) *TaskExecutor {
return &TaskExecutor{tasks: tasks, media: media, runtime: runtime}
executor := &TaskExecutor{tasks: tasks, media: media, runtime: runtime}
registerTaskMethods(executor)
return executor
}
func privateIP(ip net.IP) bool {
@@ -61,7 +63,7 @@ func (e *TaskExecutor) runHTTP(ctx context.Context, task *biz.TimedTask) (string
if parsed.Scheme != "http" && parsed.Scheme != "https" {
return "", fmt.Errorf("仅允许 http/https, 实际为 %q", parsed.Scheme)
}
method := strings.ToUpper(task.HTTPMethod)
method := strings.ToUpper(strings.TrimSpace(task.HTTPMethod))
if method == "" {
method = http.MethodGet
}
@@ -102,6 +104,10 @@ func truncateTaskText(value string) string {
}
func (e *TaskExecutor) runMethod(task *biz.TimedTask) error {
method, ok := biz.TaskMethodByName(task.MethodName)
if !ok {
return fmt.Errorf("方法 %s 未注册(需在 internal/worker/task_registry.go 经 biz.RegisterTaskMethod 注册)", task.MethodName)
}
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Minute)
defer cancel()
done := make(chan error, 1)
@@ -111,21 +117,7 @@ func (e *TaskExecutor) runMethod(task *biz.TimedTask) error {
done <- fmt.Errorf("panic: %v", recovered)
}
}()
var err error
switch task.MethodName {
case biz.TaskMethodClearDB:
err = e.tasks.CleanupLogs(ctx)
case biz.TaskMethodUploads:
ttl := 24
config := e.runtime.Admin()
if config != nil && config.Media != nil && config.Media.SessionTtl > 0 {
ttl = int(config.Media.SessionTtl)
}
err = e.media.CleanupStale(ctx, ttl)
default:
err = fmt.Errorf("方法 %s 未注册(需在 initialize/timer.go 经 task.Register 注册)", task.MethodName)
}
done <- err
done <- method(ctx, json.RawMessage(task.Params))
}()
select {
case err := <-done: