fix: 修复请求头转发与任务状态流转问题
移除 util.ForwardHeaders,改为从原始请求精确提取 Authorization 或全部请求头; 任务创建时直接设为 Running 状态,避免二次更新与查询; 模型调用使用独立超时上下文,防止外层取消影响回调; 增加 OSS 上传耗时日志,调整数据库连接池参数。
This commit is contained in:
@@ -65,20 +65,20 @@ func (s *taskService) Create(ctx context.Context, req *dto.CreateTaskReq) (res *
|
||||
Body: req.RequestPayload,
|
||||
Headers: util.ParseHeadMsgHeaders(model.HeadMsg),
|
||||
}
|
||||
id, err := dao.ModelGatewayTask.Insert(ctx, &entity.ModelGatewayTask{
|
||||
ModelName: req.ModelName,
|
||||
TaskID: taskID,
|
||||
State: public.TaskStatusPending,
|
||||
BizName: req.BizName,
|
||||
CallbackURL: req.CallbackUrl,
|
||||
RequestPayload: &requestPayload,
|
||||
EpicycleId: req.EpicycleId,
|
||||
})
|
||||
task := new(entity.ModelGatewayTask)
|
||||
task.ModelName = model.ModelName
|
||||
task.TaskID = taskID
|
||||
task.State = public.TaskStatusRunning
|
||||
task.BizName = req.BizName
|
||||
task.CallbackURL = req.CallbackUrl
|
||||
task.RequestPayload = &requestPayload
|
||||
task.EpicycleId = req.EpicycleId
|
||||
id, err := dao.ModelGatewayTask.Insert(ctx, task)
|
||||
if err != nil { // 入库失败:回滚闸门占位
|
||||
queue.ReleaseQueueSlot(ctx, req.ModelName, taskID)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
task.Id = id
|
||||
// 4) 写操作日志(不影响主流程,失败忽略)
|
||||
ip := ""
|
||||
ua := ""
|
||||
@@ -107,25 +107,25 @@ func (s *taskService) Create(ctx context.Context, req *dto.CreateTaskReq) (res *
|
||||
},
|
||||
})
|
||||
|
||||
// 5) 抢占任务:改为执行中
|
||||
rows, err := dao.ModelGatewayTask.Update(ctx, &entity.ModelGatewayTask{
|
||||
SQLBaseDO: beans.SQLBaseDO{Id: id},
|
||||
State: public.TaskStatusRunning,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if rows == 0 {
|
||||
return nil, fmt.Errorf("任务不存在: id=%d", id)
|
||||
}
|
||||
//// 5) 抢占任务:改为执行中
|
||||
//rows, err := dao.ModelGatewayTask.Update(ctx, &entity.ModelGatewayTask{
|
||||
// SQLBaseDO: beans.SQLBaseDO{Id: id},
|
||||
// State: public.TaskStatusRunning,
|
||||
//})
|
||||
//if err != nil {
|
||||
// return nil, err
|
||||
//}
|
||||
//if rows == 0 {
|
||||
// return nil, fmt.Errorf("任务不存在: id=%d", id)
|
||||
//}
|
||||
|
||||
// 6) 查询任务信息
|
||||
task, err := dao.ModelGatewayTask.Get(ctx, &entity.ModelGatewayTask{
|
||||
SQLBaseDO: beans.SQLBaseDO{Id: id},
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
//task, err := dao.ModelGatewayTask.Get(ctx, &entity.ModelGatewayTask{
|
||||
// SQLBaseDO: beans.SQLBaseDO{Id: id},
|
||||
//})
|
||||
//if err != nil {
|
||||
// return nil, err
|
||||
//}
|
||||
|
||||
// 7) 创建成功后立即异步尝试执行当前任务
|
||||
go AsyncWorker.handleOne(util.AsyncCtx(ctx), task, model, req)
|
||||
|
||||
Reference in New Issue
Block a user