NDB的_post_delete_hook方法中未来的参数有什么用?

时间:2015-03-03 00:07:08

标签: python-2.7 google-app-engine google-cloud-datastore app-engine-ndb

GAE中NDB _post_delete_hook的签名是:

def _post_delete_hook(cls, key, future):

我想知道future参数给出了什么好处。根据{{​​1}}上的文档,此Key.delete 始终Future。文档甚至说你不能使用None来确定删除是否成功。它们是(来自Future中的Key.delete):

key.py

所以,我的问题是,这个""" This returns a Future, whose result becomes available once the deletion is complete. If no such entity exists, a Future is still returned. In all cases the Future's result is None (i.e. there is no way to tell whether the entity existed or not). """ 参数有什么用?我应该阻止它以确保在调用我的删除挂钩之前完成NDB删除吗?或者它只是future初始实现中的保留/残余,并且该方法现在必须采用3个参数,无论如何?

这是一个非常开放的问题,所以我只想加强我的应用引擎知识,看看你们有什么想法/过去如何使用它。

1 个答案:

答案 0 :(得分:1)

根据文献[1]:

如果使用带有异步API的后挂钩,则通过调用check_result()get_result()或让(在tasklet内部)生成异步方法的未来来触发挂钩。 Post hooks不检查RPC是否成功;无论失败如何,钩子都会运行。

所有后挂钩在呼叫签名末尾都有一个Future参数。此Future对象包含操作的结果。您可以在此Future上调用get_result()来检索结果;您可以确定get_result()不会阻止,因为在调用挂钩时Future已完成。

对我来说,arg Future这只是一个剩下的人。

[1] https://cloud.google.com/appengine/docs/standard/python/ndb/creating-entity-models#using_model_hooks