google-app-engine - 如何在不同的模块上执行 App Engine Go SDK 延迟包?

标签 google-app-engine go

我有一个包含多个模块的应用程序。 dispatch.yaml 文件将所有 */api/* 调用从我的 default 模块路由到我的 server 模块。

发生以下请求链:

  1. http://myapp.appspot.com/api/webrequest - 注意我们在默认模块上。
  2. http://server-dot-myapp.appspot.com/api/webrequest - 使用 dispatch.yaml 重定向到使用 delay package 进行 appengine.delay.Call 的服务器模块.
  3. http://myapp.appspot.com/_ah/queue/go/delay - 在默认模块上调用 appengine.delay.Func 而不是 http://server-dot-myapp.appspot.com/_ah/queue/go/delay正如我所料。

如何让我的 appengine.delay.Func 执行 http://server-dot-myapp.appspot.com/_ah/queue/go/delay

请注意,如果我调用 http://server-dot-myapp.appspot.com/api/webrequest直接不使用 dispatch.yaml 重定向,一切都按预期工作,appengine.delay.Func 被调用 http://server-dot-myapp.appspot.com/_ah/queue/go/delay .

最佳答案

这是由于 App Engine 中的不协调造成的。参见 Google Groups讨论以获取更多信息。

本质上不是使用 appengine.delay.Call,而是使用 appengine.delay.Task 并将 Host 参数设置为模块主机名你想要:

t := myDelayFunc.Task("myparam")
t.Header = make(map[string][]string)

hostName, err := appengine.ModuleHostname(context, "[your module name]", "", "")
t.Header.Set("Host", hostName)
taskqueue.Add(context, t)

关于google-app-engine - 如何在不同的模块上执行 App Engine Go SDK 延迟包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19778059/

相关文章:

python - 无法在谷歌应用引擎服务上设置手动缩放

php - 使用 oAuth 处理多个谷歌登录用户

windows - 我可以在构建 Go 程序的同时静态链接一些 DLL 吗?

docker - 在 GoLang Docker SDK 中为卷定义挂载点

c - 从Golang调用C函数

google-app-engine - 在 Mac 上使用 App Engine 时出现问题 Java JRE

google-app-engine - 如何在 GWT 中设置 CSS 样式颜色

java - Ref<?> 值尚未初始化

typescript - Go中 typescript 解密中的AES加密

json - 如何比较不同顺序的JSON?