我有一个包含多个模块的应用程序。 dispatch.yaml
文件会将*/api/*
模块中的所有default
次呼叫路由到我的server
模块。
发生以下请求链:
dispatch.yaml
将appengine.delay.Call
重定向到使用delay package进行appengine.delay.Func
的服务器模块。appengine.delay.Func
,而不是像我期望的那样调用http://server-dot-myapp.appspot.com/_ah/queue/go/delay。如何使用http://server-dot-myapp.appspot.com/_ah/queue/go/delay执行dispatch.yaml
执行?
请注意,如果我在不使用appengine.delay.Func
重定向的情况下直接致电http://server-dot-myapp.appspot.com/api/webrequest,则所有内容都会按预期运行,并{{1}}调用{{1}}。
答案 0 :(得分:3)
这是由于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)