自定义GAE任务队列出错

时间:2013-09-23 14:58:36

标签: python google-app-engine task-queue

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

我已阅读并复制了appengine docs中提供的示例代码。

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

我的工作是:

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:未定义全局名称“任务”

为什么?在我看来,我遗漏了一些基本的东西,但我无法弄清楚是什么。它在docs中说任务类由任务队列模块提供。

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

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

但我想理解为什么其他方法不起作用。如果有人可以帮助我,那将是非常好的。

2 个答案:

答案 0 :(得分:1)

From the documentation

  

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})

答案 1 :(得分: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)