Ven*_*ius 10 google-app-engine go google-app-engine-go
我在Go App Engine应用程序中有一个推送任务队列.当我们尝试将任务排入测试时,无论出于何种原因,任务总是返回404.
我们的app.yaml:
runtime: go
api_version: go1.9
handlers:
- url: /worker/.*
script: _go_app
login: admin
- url: /.*
script: _go_app
Run Code Online (Sandbox Code Playgroud)
实际的任务调用:
func Handler(w http.ResponseWriter, r *http.Request) {
ctx := appengine.NewContext(r)
t := taskqueue.NewPOSTTask("/worker", map[string][]string{"key": {"val"}})
_, err := taskqueue.Add(ctx, t, "")
if err != nil {
log.Errorf(ctx, "Failed to add task");
}
fmt.Fprintf(w, "Success");
}
Run Code Online (Sandbox Code Playgroud)
一个仍然不完整的处理程序,但它存在!
func Worker(w http.ResponseWriter, r *http.Request) {
ctx := appengine.NewContext(r)
log.Infof(ctx, "Worker succeeded")
}
Run Code Online (Sandbox Code Playgroud)
最后,证明我们实际上已经添加了路由器的路径:
func init() {
http.HandleFunc("/", Handler)
http.HandleFunc("/worker", Worker)
}
Run Code Online (Sandbox Code Playgroud)
当我们实际运行测试时,我们总是得到以下日志记录输出:
INFO 2018-05-03 09:51:11,794 module.py:846] default: "POST /worker HTTP/1.1" 404 19
WARNING 2018-05-03 09:51:11,794 taskqueue_stub.py:2149] Task ? failed to execute. This task will retry in 0.100 seconds
INFO 2018-05-03 09:51:11,897 module.py:846] default: "POST /worker HTTP/1.1" 404 19
WARNING 2018-05-03 09:51:11,897 taskqueue_stub.py:2149] Task ? failed to execute. This task will retry in 0.200 seconds
INFO 2018-05-03 09:51:12,101 module.py:846] default: "POST /worker HTTP/1.1" 404 19
WARNING 2018-05-03 09:51:12,101 taskqueue_stub.py:2149] Task ? failed to execute. This task will retry in 0.400 seconds
Run Code Online (Sandbox Code Playgroud)
请注意,/worker当我尝试通过像Paw这样的API客户端ping它时,端点返回302,因此路径似乎已正确配置.只有当我尝试在测试中运行时才会出现404.
为什么这会回归404?我已经尝试在示例推送队列中运行测试,在他们的文档中遇到了同样的问题 - 是否有某种缺少的配置标志我没有传递给它goapp?
我推了一个GitHub库用最小的复制例子在这里
您的handlers模式是/worker/.*,但您正在向 发出任务/worker。
您应该执行以下操作之一:
/worker.*或只是/worker/worker/或者向或发出请求/worker/some-task-name。| 归档时间: |
|
| 查看次数: |
373 次 |
| 最近记录: |