NDB post_put_hook и очередь задач

У меня возникла небольшая проблема с использованием ndb post_put_hook для добавления чего-либо в очередь задач. Я создал хук в своей модели, и всякий раз, когда выполняется put(), хук выполняется бесконечно. Если я делаю что-то еще, но добавляю что-то в очередь задач, все работает нормально, хук выполняется только один раз.

Когда я делаю это:

class MyModel(ndb.Model):
    name = StringProperty()

    def _post_put_hook(self, future):
        logging.info("Doing Something")

MyModel(name="myname").put()

Результат:

Doing Something

Тем не менее, делая это:

class MyModel(ndb.Model):
    name = StringProperty()

    def _post_put_hook(self, future):
        logging.info("Adding a task")
        taskqueue.add(...)

MyModel(name="myname").put()

Результат:

Adding a task
Adding a task
Adding a task
...
Adding a task

Оттуда я должен остановить SDK, иначе он продолжит выполняться. К вашему сведению, задача добавляется правильно (хотя и много раз) и каждый раз возвращает 200.

Я впервые использую такие крючки, так что, возможно, я что-то упускаю. Любая подсказка?

Спасибо !


person brian    schedule 04.07.2013    source источник


Ответы (1)


Итак, я понял, в чем проблема: где-то в моей задаче я выполняю другой метод put() для того же документа, что объясняет такое поведение.

person brian    schedule 04.07.2013
comment
Я думаю, что есть способ закрыть свой вопрос, поскольку речь шла об ошибке в вашем собственном коде, и вы не показали нам весь код. - person Guido van Rossum; 04.07.2013