0

我按照此文档创建了一个任务,并阅读了“您还可以微调任务的配置,例如安排将来应该执行的时间”。

但是,我仍然不清楚如何在time.Duration我选择的延迟(a)中有效地安排执行,例如“请在 20 分钟内触发这些对象的清理”。

相关的 LOC 是CreateTaskRequest创造,以及Task创造:

        req := &taskspb.CreateTaskRequest{
                Parent: queuePath,
                Task: &taskspb.Task{
                        MessageType: &taskspb.Task_HttpRequest{
                                HttpRequest: &taskspb.HttpRequest{
                                        HttpMethod: taskspb.HttpMethod_POST,
                                        Url:        url,
                                },
                        },
                },
        }
        createdTask, err := client.CreateTask(ctx, req)

我应该考虑为此使用Cloud Scheduler吗?

4

1 回答 1

2

为此,您不需要 Cloud Scheduler。

您正在寻找的是字段tasks.Task.ScheduleTime,其类型为 * timestamppb.Timestamp

将您time.Duration*timestamppb.Timestamp日期转换为未来的日期非常简单(此处忽略任何亚秒级精度):

        var d time.Duration = 20 * time.Minute
            
        ts := &timestamppb.Timestamp{
            Seconds: time.Now().Add(d).Unix(),
        },

        req := &taskspb.CreateTaskRequest{
                Parent: queuePath,
                Task: &taskspb.Task{
                        MessageType: &taskspb.Task_HttpRequest{
                                HttpRequest: &taskspb.HttpRequest{
                                        HttpMethod: taskspb.HttpMethod_POST,
                                        Url:        url,
                                },
                        },
                        ScheduleTime: ts,
                },
        }

以上适用于API v2

于 2020-09-17T16:15:31.990 回答