我有一个包含多个模块的应用程序。 dispatch.yaml
文件将所有*/api/*
调用从我的default
模块路由到我的server
模块。
发生以下请求链:
dispatch.yaml
重定向到服务器模块,服务器模块使用delay package进行appengine.delay.Call
的创建。 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一起执行?请注意,如果我不使用
dispatch.yaml
重定向直接调用http://server-dot-myapp.appspot.com/api/webrequest,那么一切都会按预期工作,并且使用http://server-dot-myapp.appspot.com/_ah/queue/go/delay调用了appengine.delay.Func
。 最佳答案
这是由于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/