2013-09-23 3 views
2

Я пишу свое первое «серьезное» приложение с AppEngine и столкнулся с некоторыми проблемами с очередью задач.Ошибка с пользовательской задачей задачи GAE

Я прочитал и воспроизвел пример кода, который приведен в документах 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: global name 'Task' is not defined

Почему это? Мне кажется, что у меня что-то не хватает, но я не могу понять, что. В сообщении docs говорится, что класс задачи предоставляется модулем taskqueue.

К настоящему времени я понял, что это работает, если я заменю две задачи, связанные строки в коде выше со следующим:

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

Но я хотел бы понять, почему другой метод не работа все же. Было бы очень приятно, если бы кто-то мог помочь мне здесь.

+0

заменить 'Task' на' taskqueue.Task' – karthikr

+0

Ничего себе, спасибо! Это было очень быстро! И это действительно было что-то основное ... как я могу пометить ваш комментарий как решение? – Lynbarry

+0

Рад, что это помогло. Я ответил на ваш вопрос. Теперь вы можете пометить ответ как принятый. – karthikr

ответ

1

From the documentation

Task is provided by the google.appengine.api.taskqueue module.

Поскольку вы уже импортировали

from google.appengine.api import taskqueue 

Вы можете заменить эту строку:

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

с

task = taskqueue.Task(url='/queue', params={'key':key}) 
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) 
Смежные вопросы