首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >应用引擎推送任务在测试中始终返回404

应用引擎推送任务在测试中始终返回404
EN

Stack Overflow用户
提问于 2018-05-03 17:58:15
回答 2查看 532关注 0票数 10

我在Go App Engine应用程序中有一个推送任务队列。当我们在测试中尝试将任务排入队列时,不管是什么原因,任务总是返回404。

我们的app.yaml:

代码语言:javascript
运行
复制
runtime: go
api_version: go1.9

handlers:
 - url: /worker/.*
   script: _go_app
   login: admin
 - url: /.*
   script: _go_app

实际的任务调用:

代码语言:javascript
运行
复制
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");
}

一个仍然不完整的处理程序,但它确实存在!

代码语言:javascript
运行
复制
func Worker(w http.ResponseWriter, r *http.Request) {
    ctx := appengine.NewContext(r)
    log.Infof(ctx, "Worker succeeded")
}

最后,证明我们确实向路由器添加了路径:

代码语言:javascript
运行
复制
func init() {
    http.HandleFunc("/", Handler)
    http.HandleFunc("/worker", Worker)
}

当我们实际运行测试时,我们总是得到以下日志记录输出:

代码语言:javascript
运行
复制
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

请注意,当我尝试通过Paw这样的/worker客户端对其执行ping操作时,API端点返回302,因此路由似乎已正确配置。只有当我试图在测试中运行东西时,才会出现404。

为什么返回404?我试过在他们的documentation中运行示例推送队列的测试,也遇到了同样的问题--是不是有一些我没有传递给goapp的配置标志丢失了?

我已经使用一个最小的可复制示例here推送了一个GitHub代码库

EN

Stack Overflow用户

发布于 2018-05-08 16:46:44

您的handlers模式是/worker/.*,但是您正在向/worker发出任务。

您应该执行以下操作之一:

/worker

  • Or或/worker/some-task-name.

发出

  1. 请求,或者将pattern更改为/worker.*或仅将其发送到/worker/
票数 3
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50152164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档