2

我正在使用 AppEngine 编写我的第一个“严肃”应用程序,并且在任务队列中遇到了一些问题。

我已阅读并复制了 appengine 文档中给出的示例代码。

当我尝试将任务添加到自定义队列时,它似乎对我不起作用,因为它适用于其他人

我要做的是:

from google.appengine.api import taskqueue

def EnterQueueHandler(AppHandler):
    def get(self):
        #some code
    def post(self):
        key = self.request.get("value")
        task = Task(url='/queue', params={'key':key})
        task.add("testqueue")
        self.redirect("/enterqueue")

然后我为“/queue”设置了一个处理程序。

问题是这会引发以下错误:

NameError:未定义全局名称“任务”

这是为什么?在我看来,我缺少一些基本的东西,但我不知道是什么。它在文档中说任务类是由任务队列模块提供的。

到目前为止,我已经发现如果我将上面代码中与任务相关的两个行替换为以下内容,它会起作用:

taskqueue.add(queue_name="testqueue", url="/queue", params={"key":key})

但我想了解为什么另一种方法仍然不起作用。如果有人可以在这里帮助我,那就太好了。

4

2 回答 2

1

从文档

Taskgoogle.appengine.api.taskqueue模块提供。

由于您已经导入

from google.appengine.api import taskqueue

您可以替换此行:

task = Task(url='/queue', params={'key':key})

task = taskqueue.Task(url='/queue', params={'key':key})
于 2013-09-23T15:07:59.400 回答
0

我认为不起作用的原因是“任务”未导入。下面是一个我一直成功使用的例子。看起来就像你的,但我的进口是不同的。

from google.appengine.api.taskqueue import Task

task = Task(
    url=url,
    method=method,
    payload=payload,
    params=params,
    countdown=0
)

task.add(queue_name=queue)
于 2013-09-23T15:11:25.967 回答