Каков правильный контекст для appengine taskqueue в стандартной среде выполнения go112? - PullRequest
1 голос
/ 22 мая 2019

Я не могу заставить очередь задач appengine принять любой контекст, который я к ней добавляю:

import (
    "context"
    "google.golang.org/appengine"
    "google.golang.org/appengine/taskqueue"
)

   /* snip */

    ctx:= context.Background()
    task := taskqueue.NewPOSTTask("/b/mytask", params)
    _, err = taskqueue.Add(ctx, task, "")
    if err != nil {
        return fmt.Errorf("adding background task with path %s: %v", task.Path, err)
    }

Я вызываю appengine.Main () в моем основном main.go функционале, как указано Документы по миграции go111 (но эта строка отсутствует в Документах по миграции go112 , поэтому я не уверен, что это необходимо).

Я пробовал:

context.Background()
request.Context()
appengine.NewContext(r)
appengine.BackgroundContext()
context.TODO()

Все результаты приводят к ошибке:

не контекст App Engine

за исключением appengine.BackgroundContext(), который получает:

сервисный мост HTTPне удалось: сообщение http://appengine.googleapis.internal:10001/rpc_http: набрать tcp 169.254.169.253:10001: тайм-аут ввода-вывода

Ответы [ 2 ]

0 голосов
/ 01 июля 2019

Документация для перехода на 1.12 гласит:

Используйте облачные задачи для постановки задач из Go 1.12 с помощью пакета облачных задач. Вы можете использовать любую службу App Engine в качестве цели задачи App Engine.

Но документация пакета облачных задач (на сегодняшний день) четко помечена как бета-версия и нестабильная . Таким образом, ответ здесь, вероятно, Эта функция не поддерживается.

Тем не менее, я использую его в производстве под go111 без каких-либо серьезных проблем, которые я заметил до сих пор.

0 голосов
/ 16 июня 2019

У меня возникли те же проблемы при переносе стандартного проекта GAE с go19 на go112 для использования модулей go. Кроме того, я получил много сообщений "502 bad gateway".

Замена http.ListenAndServe () в main () на appengine.Main () исправила проблему контекста. Переход к go111 вместо 112 позаботился о другой проблеме. Документы и примеры не очень ясны по этому вопросу.

...