Как мне запустить локальный эмулятор GAE с Go 1.12? - PullRequest
1 голос
/ 25 сентября 2019

С Go 1.9 вы запустили локальный эмулятор GAE с "dev_appserver.py yaml"

Кажется, google-cloud-sdk / устарел.

Документация Go 1.12 говорит, что вы можете запуститьлокальный эмулятор с "go run" https://cloud.google.com/appengine/docs/standard/go112/testing-and-deploying-your-app

Мне не удалось запустить демонстрационное приложение с:
google.golang.org/appengine/demos/helloworld

$иди беги * .go

2019/09/25 10:57:27 INFO: Serving the front page.
panic: Metadata fetch failed for 'instance/attributes/gae_project': Get http://metadata/computeMetadata/v1/instance/attributes/gae_project: dial tcp: lookup metadata: no such host

goroutine 5 [running]:
google.golang.org/appengine/internal.mustGetMetadata(0x1474a38, 0x1f, 0x0, 0x0, 0x0)
    /Users/Steve/go/src/google.golang.org/appengine/internal/metadata.go:34 +0x18a
google.golang.org/appengine/internal.partitionlessAppID(0x0, 0xc0000304c0)
    /Users/Steve/go/src/google.golang.org/appengine/internal/identity_vm.go:112 +0xa2
google.golang.org/appengine/internal.DefaultTicket.func1()
    /Users/Steve/go/src/google.golang.org/appengine/internal/api.go:294 +0x86
sync.(*Once).Do(0x17f0150, 0x1484448)
    /usr/local/go/src/sync/once.go:44 +0xb3
google.golang.org/appengine/internal.DefaultTicket(0xc0001945d0, 0x13b78e0)
    /Users/Steve/go/src/google.golang.org/appengine/internal/api.go:289 +0x39
google.golang.org/appengine/internal.Call(0x14d9f00, 0xc0001945d0, 0x146a718, 0xa, 0x14666df, 0x5, 0x14d8ec0, 0xc0000304c0, 0x14d80c0, 0xc00000c1e0, ...)
    /Users/Steve/go/src/google.golang.org/appengine/internal/api.go:496 +0x8ea
google.golang.org/appengine/internal.(*context).flushLog(0xc0001920c0, 0x1484b01, 0xc00002e100)
    /Users/Steve/go/src/google.golang.org/appengine/internal/api.go:641 +0x3c7
google.golang.org/appengine/internal.handleHTTP.func1(0xc00002e120, 0xc0001920c0)
    /Users/Steve/go/src/google.golang.org/appengine/internal/api.go:138 +0x56
created by google.golang.org/appengine/internal.handleHTTP
    /Users/Steve/go/src/google.golang.org/appengine/internal/api.go:134 +0x350
exit status 2

Что я делаю не так?

1 Ответ

1 голос
/ 26 сентября 2019

Короткий ответ: эмулятора App Engine не существует с Go 1.12 и далее.Вы запускаете свой проект как обычную программу Go, потому что теперь по большей части является обычной программой Go.

Этот пример helloworld не обновлялся в соответствии сновые соглашения для Go 1.12 на App Engine ... особенно потому, что он находится в старых устаревших библиотеках.Вы больше не звоните appengine.Main, просто http.ListenAndServe, как обычно, вне App Engine.

Они прошли (в основном) полный круг и открыли его, так что стандартная библиотека вызывает, что выиспользование в обычной программе Go теперь является тем, что вы используете в App Engine, за некоторыми исключениями.Это позволяет легко перенести практически любую существующую автономную программу Go в App Engine с гораздо меньшими трудностями, что является победой для них и победой для разработчиков.

Даже если вы начинаете с нуля и не переходите с прежней версииSDK, вы должны прочитать эту статью, так как она описывает ряд изменений, о которых вы хотели бы знать, и не упускайте возможности в библиотеках с открытым исходным кодом, которые, возможно, все еще могут быть унаследованы.Если вы выполняете миграцию, это будет особенно полезно.

https://cloud.google.com/appengine/docs/standard/go112/go-differences

Известный фрагмент:

App Engine больше не изменяет цепочку инструментов Go, чтобы включить пакет appengine,Если вы используете пакет appengine или пакет google.golang.org/appengine, вы должны перейти на клиентскую библиотеку Google Cloud.

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