2012-07-01 2 views
2

Существует небольшая информация о том, как планировать очередь задач на бэкэнд в Google App Engine в Go. В TQ's Reference мы можем прочитать:GAE Golang - Как правильно назначить очередь задач на бэкэнд?

// 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 

Но нет никаких объяснений о том, что на самом деле установить «Host» в. В Обзор бэкэндов можно аналогично следующим образом:

Частные движки могут быть доступны администраторами приложений, экземплярами приложения, а также API, и услуг (например, задач Очереди задач и заданий Cron) App Engine без какой-либо специальной конфигурации ,

Но опять же никаких объяснений не приводится.

Я попытался установить значение «Host» на имя внутреннего блока, но задачи выполняются обычным приложением.

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

Каков правильный способ запланировать вызов Backend в GAE Go?

+1

Ваш вопрос помог мне понять, что я неправильно прочитал документацию, а NewPOSTTask просто выполняет задачу, но ее не выпускает. Упростите мой код. Благодарю. :) – Dustin

ответ

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 
2

Используйте функцию appengine.BackendHostname, чтобы получить имя хоста для внутреннего интерфейса. Это должно использоваться как заголовок Host для задачи.

Смежные вопросы