正如标题所说。我们有一个旧版 Go 1.11 AppEngine API,需要 dev_appserver.py
才能运行。简而言之,我希望 appengine.Main()
和 appengine.NewContext(r)
允许我的应用程序使用我的 project-id
指向我的云数据存储,而不是本地模拟器的存储。我设置了 GOOGLE_APPLICATION_CREDENTIALS
没有效果。
这样我就可以在本地运行服务器,同时访问共享的云数据库。
我正在使用 google.golang.org/[email protected]
和 dev_appserver.py --enable_console --port=8081 --support_datastore_emulator=true --go_debugging=true app.yaml
这可能吗?或者在使用旧的 Go 库时我是否停留在本地模拟器上?
从评论转向回答
查看 go 1.11 的 remote_api
https://cloud.google.com/appengine/docs/legacy/standard/go111/tools/remoteapi
使用它的逻辑类似于 -
如果在本地环境中运行,请使用 remote_api
否则坚持默认行为(即由于 remote_api
未启用,它将在本地环境中使用模拟器或直接在生产中使用生产数据)
为了简单起见,您可以尝试使用相同的变量名称,即
if this is local environment ctx, err := remote_api.NewRemoteContext(host, hc) else ctx := appengine.NewContext(r)
然后,您在对数据存储区的其余查询/调用中使用“ctx”
注意:我不熟悉“go”,因此将以上内容视为伪代码而不是工作代码
您可能还想考虑不使用 --support_datastore_emulator=true
标志运行上述更改