1

簽名爲NDB _post_delete_hook在GAE是:NDB的_post_delete_hook方法中的未來參數有什麼用處?

def _post_delete_hook(cls, key, future):

我想知道什麼受益future參數給出。根據Key.delete的文檔,該Future總是None。該文檔甚至說您不能使用Future來確定刪除是否成功。在這裏,他們是(從Key.deletekey.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). 
""" 

所以,我的問題是,有什麼用此future參數?我應該阻止它以確保在調用我的刪除掛鉤之前完成NDB刪除?或者它僅僅是_post_delete_hook的初始實施中的延期/剩餘部分,無論如何,該方法現在必須接受3個參數?

這是一個非常開放的問題,所以我只想提高我的應用程序引擎知識,看看你們有什麼想法/過去如何使用它。

+0

你從哪裏找到該報價? @ hjc1710 – Layo 2015-03-04 16:15:48

+0

該報價直接來自NDB的源代碼,位於NDB的delete_async的文檔字符串中的「google/appengine/ext/ndb/key.py」中(第560行)。它可能只是一個殘餘。 – hjc1710 2015-04-02 15:43:30

回答

1

據文獻[1]:

如果使用後掛鉤異步API中,鉤子通過調用check_result()get_result()或產生(一個tasklet內)異步方法的未來觸發。 Post鉤子不檢查RPC是否成功;無論失敗,掛鉤都會運行。

所有掛鉤在呼叫簽名末尾有一個Future參數。這個Future對象包含這個動作的結果。您可以在此Future上致電get_result()以檢索結果;您可以確定get_result()不會被阻止,因爲Future在掛鉤被調用時完成。

對於我來說,arg Future這只是一個剩餘。

[1] https://cloud.google.com/appengine/docs/python/ndb/entities#hooks

相關問題