优化
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user