未创建 Google Cloud 任务。错误状态:“409 无法创建任务,因为具有此名称的任务最近存在”

2024-04-29

通过向请求提供任务名称来创建云任务。

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 获取队列中当前的任务。


从堆栈溢出的其他答案之一中发现了该问题。问题是,如果任务的队列是使用 Cloud Tasks 创建的,则在删除或执行原始任务后约 1 小时内无法创建同名的另一个任务。

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

另一个答案 https://stackoverflow.com/questions/63694524/gcp-cloud-tasks-shorten-period-for-creating-a-previously-created-named-task

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

未创建 Google Cloud 任务。错误状态:“409 无法创建任务,因为具有此名称的任务最近存在” 的相关文章

随机推荐