我遵循this documentation创建任务,并阅读“您还可以微调任务的配置,例如安排将来应执行的时间”。
但是我仍然不清楚如何在我选择的延迟(time.Duration
)中有效地安排执行时间,例如“请在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吗?
最佳答案
您不需要Cloud Scheduler。
您要查找的是字段tasks.Task .ScheduleTime
,其类型为* timestamppb.Timestamp。
将您的time.Duration
转换为将来的*timestamppb.Timestamp
日期非常简单(此处忽略任何亚秒精度):
var d time.Duration = 20 * time.Minute
ts := ×tamppb.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。
关于go - 如何通过Google Cloud Tasks Go客户端库指定执行延迟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63942162/