我正在用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})
但我想理解为什么其他方法不起作用。如果有人可以帮助我,那将是非常好的。
答案 0 :(得分:1)
Task
由google.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)