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:
dispatch.yaml
to the server module where appengine.delay.Call
is made using the delay package.appengine.delay.Func
is called on the default module instead of http://server-dot-myapp.appspot.com/_ah/queue/go/delay like I would expect.How can I make my appengine.delay.Func
execute with http://server-dot-myapp.appspot.com/_ah/queue/go/delay?
Note that if I call http://server-dot-myapp.appspot.com/api/webrequest directly without using the dispatch.yaml
redirect, everything workes as expected and appengine.delay.Func
gets called with http://server-dot-myapp.appspot.com/_ah/queue/go/delay.
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)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With