2

关于如何在 Go 中的 Google App Engine 中将任务队列安排到后端的信息很少。在TQ 的参考资料中,我们可以阅读:

// Additional HTTP headers to pass at the task's execution time.
// To schedule the task to be run with an alternate app version
// or backend, set the "Host" header.
Header http.Header

但是没有解释真正将“主机”设置为什么。在后端的概述中,我们可以类似地阅读:

应用程序管理员、应用程序实例以及 App Engine API 和服务(例如任务队列任务和 Cron 作业)无需任何特殊配置即可访问私有后端。

但同样,没有给出任何解释。

我尝试将“主机”值设置为后端的名称,但任务由普通应用程序执行。

t := taskqueue.NewPOSTTask("/", map[string][]string{"key": {key}})
t.Header.Add("Host", "backend")
if _, err := taskqueue.Add(c, t, ""); err != nil {
    return
}

在 GAE Go 中安排后端调用的正确方法是什么?

4

2 回答 2

3

使用命名队列最容易定位后端。例如:

_, err = taskqueue.Add(c, &taskqueue.Task{
    Path:    "/myProcessorPath",
    Payload: myPayload,
}, "myQueueName")

您的队列定义指定了后端。例如对于myQueueName,您可能有一个queue.yaml如下所示的条目:

- name: myQueueName
  target: myBackendName
  rate: 400/s
  max_concurrent_requests: 64
  bucket_size: 25
  retry_parameters:
    task_age_limit: 7d
于 2012-07-02T21:17:11.377 回答
2

使用该appengine.BackendHostname函数获取后端的主机名。这应该可以用作任务的主机头。

于 2012-07-26T06:57:17.560 回答