App Engine的go context.Context没有命名空间。

huangapple go评论78阅读模式
英文:

App Engine go context.Context has no namespace

问题

ctx, ctxErr := appengine.Namespace(ctx, "MyContext")获取上下文后,我期望ctx的命名空间被设置为MyContext

代码

import (
...
"golang.org/x/net/context"
"google.golang.org/appengine"
)


ctx := appengine.NewContext(r)
ctx, ctxErr := appengine.Namespace(ctx, "MyContext")
if ctxErr != nil {
  log.Errorf(ctx, "Failed to obtain custom namespace context, error:%s", ctxErr.Error())
  //如果一切都失败了,则使用默认命名空间
  ctx = appengine.NewContext(r)
}

然而,事实并非如此,这导致所有具有命名空间意识的 API 使用默认命名空间。

ctx 的输出如下所示(请参见黄色边框的输出):

App Engine的go context.Context没有命名空间。

示例应用程序

projectID := ""替换为您的项目ID,确保在开发环境中进行了身份验证,并运行go run /example/app/main.go

示例应用程序

英文:

After obtain a context from ctx, ctxErr := appengine.Namespace(ctx, "MyContext") I would expect ctx namespace to be populated with MyContext

Code

import (
...
"golang.org/x/net/context"
"google.golang.org/appengine"
)


ctx := appengine.NewContext(r)
ctx, ctxErr := appengine.Namespace(ctx, "MyContext")
if ctxErr != nil {
  log.Errorf(ctx, "Failed to obtain custom namespace context, error:%s", ctxErr.Error())
  //use default if all else fails
  ctx = appengine.NewContext(r)
}

However this is not the case, thus causing all namespace aware API to use default namespace.

Dump of ctx produces the following (see yellow bordered output)

App Engine的go context.Context没有命名空间。

Example App

Populate projectID := "" with your project id, ensure you have performed authentication on your development environment and run go run /example/app/main.go

Example App

答案1

得分: 2

混合使用Google API Go库导致了问题。

长答案

简短答案

Google Cloud API库有两种不同的版本,问题是由于混合使用了下面两个库的功能而引起的。

google-cloud-go 推荐使用

google-api-go-client

英文:

Mixing of google api go libs, was causing the problem.

Long Answer

Short Answer

Google Cloud API libs come in two different flavors, issues was caused by mixing of lib features from libs below.

google-cloud-go Recommanded

google-api-go-client

huangapple
  • 本文由 发表于 2016年12月9日 21:40:57
  • 转载请务必保留本文链接:https://go.coder-hub.com/41061803.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定