函式
- 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)
- 在交易中執行回呼。
引數
- callback
- 要呼叫的函式或工作小程式
- **ctx_options
- 交易選項
傳回回呼傳回的任何資料。 會引發回呼引發的任何狀況,若交易失敗,則會引發
TransactionFailedError例外狀況。若要傳送引數至回呼函式,請使用 lambda。例如:
def my_callback(key, inc): ... transaction(lambda: my_callback(Key(...), 1))
- ndb.transaction_async(callback, **ctx_options)
- 在交易中非同步執行回呼。
引數
- callback
- 要呼叫的函式或工作小程式
- **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
| 如果不想等候 Datastore 對所有傳回的記錄套用待處理的變更,而想更快取得可能並非最新的結果,請將此項設為 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),仍然會是如此。