【问题标题】:Error with custom GAE task queue自定义 GAE 任务队列出错
【发布时间】:2013-09-23 14:58:36
【问题描述】:

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

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

当我尝试将任务添加到自定义队列时,它似乎对我不起作用,因为它适用于 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})

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

【问题讨论】:

  • taskqueue.Task替换Task
  • 哇,谢谢!那真的很快!这确实是一些基本的东西......我怎样才能将您的评论标记为解决方案?
  • 很高兴它有帮助。我回答了你的问题。现在,您可以将答案标记为已接受。

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


【解决方案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})

【讨论】:

    【解决方案2】:

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

    from google.appengine.api.taskqueue import Task
    
    task = Task(
        url=url,
        method=method,
        payload=payload,
        params=params,
        countdown=0
    )
    
    task.add(queue_name=queue)
    

    【讨论】:

      猜你喜欢
      • 2011-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多