函式
- ndb.add_flow_exception(exc)
- 指定例外狀況「不應」記錄,但只是一般程式流程的一部分。(通常,引發例外狀況會將警告訊息寫入應用程式的記錄檔)。
引數
- exc
- 不應記錄的例外狀況類別。
預設不記錄以下例外狀況:
webob.exc.HTTPException
(及其子類別)ndb.Rollback
- ndb.delete_multi(keys, **ctx_options)
- 刪除由傳遞的鍵序列所識別的實體。
引數
- ndb.delete_multi_async(keys, **ctx_options)
- 以非同步方式刪除由傳遞的鍵序列所標示的實體。
引數
- ndb.get_multi(keys, **ctx_options)
- 擷取由傳遞的鍵序列所標示的實體。
引數
- ndb.get_multi_async(keys, **ctx_options)
- 以非同步方式擷取由傳遞的鍵序列所標示的實體。
引數
- ndb.in_transaction()
- 會傳回布林值,表示交易在當下是否有效。
- @ndb.non_transactional
@ndb.non_transactional(allow_existing=True) - 裝飾子,可確保函式在交易外執行。
引數:
- allow_existing
- 如果
True
(預設) 且交易中的程式碼呼叫經過修飾的函式,則函式會獨立於交易執行。如果False
和經過修飾的函式是由交易中的程式碼呼叫,則會引發例外狀況。
- ndb.put_multi(entities, **ctx_options)
- 儲存 Model 例項的序列。
引數
- ndb.put_multi_async(entities, **ctx_options)
- 以非同步方式儲存 Model 例項序列。
引數
- ndb.transaction(callback, **ctx_options)
- 在交易中執行回呼。
引數
- 回呼
- 要呼叫的函式或子工作
- **ctx_options
- 交易選項
傳回 回呼 傳回的任何值。會引發回呼引發的任何狀況,若交易失敗,則會引發
TransactionFailedError
例外狀況。若要傳送引數至回呼函式,請使用 lambda。例如:
def my_callback(key, inc): ... transaction(lambda: my_callback(Key(...), 1))
- ndb.transaction_async(callback, **ctx_options)
- 在交易中以非同步方式執行回呼。
引數
- 回呼
- 要呼叫的函式或子工作
- **ctx_options
- 交易選項
傳回
Future
。future 會傳回回呼傳回的任何資料,或者會引發回呼引發的任何狀況,若交易失敗,則會引發TransactionFailedError
。若要傳送引數至回呼函式,請使用 lambda。例如:
def my_callback(key, inc): ... transaction(lambda: my_callback(Key(...), 1))
- @ndb.transactional
@ndb.transactional(**ctx_options) - 裝飾器,可讓函式自動在交易中執行。
引數:
這個修飾子可以有交易選項。
內容選項與交易選項
內容選項可讓您使用不同的設定,執行特定資料儲存庫作業。例如,您可以變更個別要求的讀取政策或遠端程序呼叫 (RPC) 期限。您可以將結構定義選項傳遞至幾乎任何作業。部分交易相關函式會採用交易選項,其中包含一組內容選項的額外選項。
以下列舉幾個使用內容選項的範例。若要在讀取實體時將 RPC 期限設為 1 秒,可以使用:
key.get(deadline=1)
若要在寫入實體時將 memcache 逾時設為 30 秒,可以使用:
ent.put(ndb_memcache_timeout=30)
若要刪除已經快取的項目並強制其重新載入,可以使用:
key.delete(use_datastore=False)
特殊關鍵字引數 options
和 config
(因歷史記錄而具有相同的意義) 可用於將數個選項指定為設定物件,這可以是 ndb.ContextOptions
物件,或是 (針對交易函式和裝飾物) ndb.TransactionOptions
物件。舉例來說,key.get(options=ndb.ContextOptions(use_cache=True))
相當於 key.get(use_cache=True)
。關鍵字參數可覆寫在這種選項物件中設定的選項。
可用的內容選項如下:
選項 | 類型 | 說明 |
---|---|---|
deadline | float
| 資料儲存庫呼叫期限,以秒數為單位。(根據預設,只有要求處理常式期限才會中斷呼叫)。 |
read_policy
| ndb.EVENTUAL_CONSISTENCY
| 如果您不想等資料儲存庫將變更套用於所有傳回的結果,而想更快得到可能並非最新的結果,請將此值設為 ndb.EVENTUAL_CONSISTENCY 。 |
force_writes
| bool
| 指定即使應用程式為唯讀,寫入要求是否仍應成功。(這項設定僅適用於使用者控制的唯讀期間)。 |
use_cache | bool | 指定是否要在程序內快取中儲存實體;覆寫此作業的程序內快取政策。 |
use_memcache | bool | 指定是否要在 Memcache 中儲存實體;覆寫此作業的 Memcache 政策。 |
use_datastore | bool | 指定是否要在 Datastore 中儲存實體,並覆寫此操作的 Datastore 政策。 |
memcache_timeout | int | Memcache 中實體的最長生命週期;會覆寫此作業的 Memcache 逾時政策。 |
max_memcache_items | int
| Context Memcache 方法的自動批次處理功能的最大批次大小。例如,若預設大小是 max_memcache_items (100),則最多 100 個 memcache 組合作業會合併為單一 set_multi 作業。 |
某些與交易相關的函式可以使用下列交易選項 (以及上方所列的沿用內容選項): | ||
選項 | 類型 | 說明 |
xg | bool
| 允許跨群組 (XG ) 交易。預設為 False 。 |
propagation | int
| NDB 針對交易內的交易提供有限支援,這類交易稱為「巢狀交易」。 傳播參數用於控制程式碼嘗試開始巢狀交易時會發生的狀況。
傳播參數的值可以是以下任何一個值:
|
retries | int
| 在交易失敗時,自動重試的次數。零代表嘗試一次,但不會重試。 |
在某些情況下,選項會因為快取的緣故而遭到忽略。舉例來說,如果您為讀取作業指定 RPC 期限,且內容快取能滿足這項讀取作業,就會忽略期限。另一方面,無法辨識的選項會導致 TypeError
提升。
套用自動批次處理功能時,系統會將選項不同的作業分成不同群組。舉例來說,如果您使用 put_async()
為部分實體寫入 deadline = 5
,而其他實體則未指定截止時間,且所有實體都符合自動批次處理的資格,自動批次處理器就會發出兩個個別的 RPC 呼叫,一個是針對含有 deadline = 5
的實體群組,另一個是針對其他群組,即使預設 RPC 截止時間也是 5 也一樣!即使您指定的選項與 RPC 作業無關 (例如 ndb_should_cache
),仍然會是如此。