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个参数,无论如何?
这是一个非常开放的问题,所以我只想加强我的应用引擎知识,看看你们有什么想法/过去如何使用它。
答案 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