NDB post_put_hook和taskqueue

时间:2013-07-04 10:27:52

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

使用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.

这是我第一次使用这样的钩子,所以也许我在这里缺少一些东西。 任何线索?

谢谢!

1 个答案:

答案 0 :(得分:0)

所以我已经弄清楚了问题是什么:在我的任务的某个地方,我在同一个文档上执行另一个put(),这解释了这种行为。