通过向请求提供任务名称来创建云任务。
req = taskspb.CreateTaskRequest{
Parent: queueID,
Task: &taskspb.Task{
Name: taskName,
MessageType: &taskspb.Task_HttpRequest{
HttpRequest: &taskspb.HttpRequest{
HttpMethod: taskspb.HttpMethod_POST,
Url: url,
},
}, ScheduleTime: ts,
},
}
有时,我们需要为最近完成的相同id(任务名称)创建任务。
尝试使用最近完成的云任务名称/ID 创建云任务时,未创建任务。看到 NOT_FOUND 错误。来自任务创建日志的日志。如果我一天后尝试同样的操作,任务就会被创建。
{
scheduleTime: "2021-10-15T16:15:09Z"
status: "NOT_FOUND"
targetAddress: "ENDPOINT"
targetType: "HTTP"
}
我将此问题缩小到特定场景,当我创建任务时,可能会为同一作业创建多个任务。由于重复数据删除,队列返回 ALREADY EXISTS 错误。这按预期工作。第一个任务已创建并调用端点并成功。
409 无法创建任务,因为该名称的任务最近才存在。有关任务重复数据删除的更多信息,请参阅https://cloud.google.com/tasks/docs/reference/rest/v2/projects.locations.queues.tasks/create#body.request_body.FIELDS.task https://cloud.google.com/tasks/docs/reference/rest/v2/projects.locations.queues.tasks/create#body.request_body.FIELDS.task.
Issue:一段时间后,如果我创建具有相同任务名称/id 的新任务(数据已更改,需要处理此新任务。任务端点必须触发并处理此更改的数据),我会看到上述错误。在云控制台中,我看不到具有此任务名称的正在运行的任务。即使我尝试过列出任务api 获取队列中当前的任务。