问题描述
我跟随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。