2013-11-04 22:01
浏览 39

如何在其他模块上执行App Engine Go SDK延迟程序包?

I have an app with several modules. A dispatch.yaml file routes all */api/* calls from my default module to my server module.

The following request chain happens:

  1. - Note we are on the default module.
  2. - Redirection with dispatch.yaml to the server module where appengine.delay.Call is made using the delay package.
  3. - The appengine.delay.Func is called on the default module instead of like I would expect.

How can I make my appengine.delay.Func execute with

Note that if I call directly without using the dispatch.yaml redirect, everything workes as expected and appengine.delay.Func gets called with

图片转代码服务由CSDN问答提供 功能建议

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


  1. -注意,我们在默认模块上。
  2. -使用 dispatch进行重定向 .yaml 到使用appengine.delay.Call 的服务器模块 delay“ rel =” nofollow“>延迟包。
  3. -在默认模块上调用 appengine.delay.Func 而不是像我期望的那样

    如何使用appengine.delay.Func 执行 =“ nofollow”>

    请注意,如果我拨打 直接而不使用 在 dispatch.yaml 重定向中,一切按预期进行,并且 appengine.delay.Func

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • dongxian8858 2013-11-10 20:45

    This is due to an incongruity in App Engine. See Google Groups discussion for further information.

    Essentially instead of using appengine.delay.Call you use appengine.delay.Task and set the Host param to the module host name you want:

    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)
    点赞 评论