2013-07-04 56 views
0

我正面临着使用ndb post_put_hook在taskqueue中添加内容的问题。 我在我的模型中创建了钩子,每当put()完成时,钩子都会无限期地执行。如果我做了其他任何事情,但添加一些任务队列,它会正常工作,钩子只执行一次。NDB post_put_hook和任务队列

当我这样做:

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。

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

谢谢!

回答

0

所以我想出了什么问题:在我的任务的某个地方,我对同一个文档执行另一个put(),这解释了这种行为。

+3

我想有一种方法可以关闭你自己的问题,因为这是关于你自己代码中的一个错误,并且你没有向我们展示所有的代码。 –