Как использовать отложенную функциональность GAE? - PullRequest
1 голос
/ 07 марта 2012

Я делаю следующее:

from google.appengine.ext import deferred

def send_message(client_id, message):
    logging.info("sending message...")

class MyHandler(webapp.RequestHandler):
    def get(self, field_name):
        ...
        scUpdate = {
                       'val': value,
                       'name': field_name_converted
                   }
        message = simplejson.dumps(scUpdate)                      
        deferred.defer(send_message, client_id, message, _countdown=random.randrange(0, 5, 1))

и получение

PermanentTaskFailure: 'module' object has no attribute 'send_message'

Что здесь не так?

Upd. похоже, что проблема та же, что описана там - PermanentTaskFailure: у объекта 'module' нет атрибута 'Migrate' - но я не понимаю, как это исправить.

1 Ответ

8 голосов
/ 07 марта 2012

См. https://developers.google.com/appengine/articles/deferred:

Ограничения отложенной библиотеки

  • Вы не можете вызвать метод в модуле обработчика запросов.

Функция, которая вызывается через deferred.defer , не должна быть в том же модуль, такой как обработчик запросов, где вызывается deferred.defer.

...