Google App Engine ModuleHostname: не контекст App Engine - PullRequest
0 голосов
/ 16 декабря 2018

Я пытаюсь обнаружить другие развернутые службы в App Engine.Что-то вроде этой статьи предлагает.

Вот так выглядит мой код:

import (
    "fmt"
    "net/http"

    "google.golang.org/appengine"
)

func ServiceHostname(serviceName string, r *http.Request) (string, error) {
    ctx := appengine.NewContext(r)
    hostname, err := appengine.ModuleHostname(ctx, serviceName, "", "")
    if err != nil {
        return "", fmt.Errorf("unable to find service %s: %v", serviceName, err)
    }
    return hostname, nil
}

Я вызываю эту функцию в обычном http-обработчике.У меня ошибка: not an App Engine context.

Единственное различие между моим кодом и ссылочной статьей в версии движка приложения.Я использую новый go111, где он использует go1 время выполнения.

Знаете ли вы, как преодолеть проблему?

Ответы [ 2 ]

0 голосов
/ 17 декабря 2018

Я нашел решение.Вам нужно вызвать appengine.Main() в вашем главном файле, даже если это не нужно делать в новой go111 среде выполнения.

Таким образом, рассматриваемый код остается тем же, вам нужно зарегистрировать ваши обработчики так же, как в go1.9 runtime.

func main() {
    http.HandleFunc("/serveurl", handle)
    appengine.Main()
}

Источник: https://groups.google.com/d/msg/google-appengine-go/ZcASFMWJKpE/7iwGirNiBgAJ

Этоalo, упомянутый в Написание основного пакета :

  • Или, если ваша служба использует пакет google.golang.org/appengine, включите вызов appengine.Main().
0 голосов
/ 16 декабря 2018

Статья, на которую вы ссылались, была написана с учетом стандартной среды 1-го поколения, 2-е поколение (go111) не было выпущено в то время:

10 октября,2018

Замечания по времени выполнения Go

Среда выполнения Go 1.11 для стандартной среды App Engine сейчас находится в стадии бета-тестирования.Руководство по миграции для перемещения приложений с Go 1.9 на Go 1.11 доступно.

Различия между двумя поколениями значительны (для всех языков, не только для go).В разделе Миграция из App Engine Go SDK (необязательно) руководства по миграции я заметил:

, который может быть связан с вашей ошибкой.Но я на самом деле не пользователь go, это всего лишь теория:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...