我想知道我是否可以在_post_put_hook()
内部进行事务性插入操作,或者在put()
内的任何操作之前如何处理_post_put_hook()
错误。
我在Python中使用Google App Engine。我的代码是这样的,
class Event(ndb.Model):
...
def _post_put_hook(self, future):
Device.get_or_insert(self.device_id, device_name=self.device_name, ...)
...
尽管get_or_insert()
是事务性的,但我不确定新的Device实体是否具有来自事件put()
的正确数据
答案 0 :(得分:1)
这正是传递给钩子的Future参数的用途。您可以调用它的check_success()
方法来确保put()
操作成功。
class Event(ndb.Model):
def _post_put_hook(self, future):
if not future or future.check_success() is None:
Device.get_or_insert(self.device_id, device_name=self.device_name, ...)
您可以在official docs中了解有关Future类的更多信息。