NDB 內容類別

應用程式可透過「Context」控管其快取政策。Context 也提供方便的非同步 API,可用於 Memcache 和網址擷取,並整合至 NDB 的非同步設施;特別是 Memcache API 支援自動批次處理。

快取管理執行個體方法

clear_cache()
清除情境快取。
flush()
清除所有自動批次處理程序佇列 (將工作傳送至伺服器)。清除作業會以非同步方式執行。

傳回 Future。如要等待沖洗作業完成,請呼叫此物件的 wait() 方法。

get_cache_policy()
傳回快取政策函式。這個政策函式必須使用 Key 例項引數,並會傳回 bool,指示內容快取是否應快取具備這組金鑰的實體。回應可能是 None (代表使用 default_cache_policy)。
get_datastore_policy()
傳回目前的 Datastore 政策函式。這個政策函式必須使用 Key 例項引數,並會傳回 bool,指示是否應使用資料儲存庫。回應可能是 None (代表使用 default_datastore_policy)。
get_memcache_policy()
傳回目前的 Memcache 政策函式。這個政策函式必須使用 Key 執行個體引數,並會傳回 bool,指示是否應加以快取。回應可能是 None (代表使用 default_memcache_policy)。
get_memcache_timeout_policy()
傳回目前的 memcache 逾時政策函式。這個政策函式必須使用 Key 執行個體引數,並會傳回所需的 Memcache 逾時秒數 (或傳回 0 來使用預設逾時值)。可能是使用 default_memcache_timeout_policyNone
set_cache_policy(func)
設定快取政策函式。

引數

func
這個函式必須使用 Key 例項引數,並會傳回 bool,指示內容快取是否應快取具備這組金鑰的實體。可以是 None
set_datastore_policy(func)
設定 Datastore 政策函式。

引數

func
這個函式必須使用 Key 例項引數,並會傳回 bool,指示永久資料儲存庫是否應儲存具備這組金鑰的實體。可以是 None
set_memcache_policy(func)
設定 Memcache 政策函式。

引數

func
這個函式必須使用 Key 例項引數,並會傳回 bool,指示內容快取是否應快取具備這組金鑰的實體。可以是 None
set_memcache_timeout_policy(func)
設定 Memcache 逾時政策函式。

引數

func
這個函式必須使用 Key 例項引數,並會傳回所需的 Memcache 逾時秒數 (或傳回 0 來使用預設逾時值)。可以是 None

Memcache 與 Urlfetch 執行個體方法

如需完整的方法清單,請參閱 Memcache API 參考資料。下列清單重點說明一些常用方法:

memcache_add(key, value, time, namespace)
非同步自動批次處理 Memcache add()
memcache_cas(key, value, time, namespace)
非同步自動批次處理 Memcache Client cas() (比較及替換)。
memcache_decr(key, delta, initial_value, namespace)
非同步自動批次處理 Memcache decr()
memcache_delete(key, seconds, namespace)
非同步自動批次處理 Memcache delete()
memcache_get(key, namespace, use_cache)
非同步自動批次處理 Memcache get()

傳回 Future,其傳回值是從 memcache 或 None 擷取的值。

memcache_gets(key, namespace, use_cache)
非同步自動批次處理 Memcache gets()
memcache_incr(key, delta, initial_value, namespace)
非同步自動批次處理 Memcache incr()
memcache_replace(key, value, time, namespace)
非同步自動批次處理 Memcache replace()
memcache_set(key, value, time, namespace, use_cache)
非同步自動批次處理 Memcache set()
urlfetch(url, payload, method, headers, allow_truncated, follow_redirects, validate_certificate, deadline, callback)
非同步自動批次處理 Urlfetch fetch().

交易管理方法

call_on_commit(callback)
將回呼排入佇列,以便在成功修訂交易時予以呼叫。

如果不在交易中,則會立即呼叫回呼。

一項交易可能會註冊多項回呼,並在交易進行修訂時立即按照註冊順序進行呼叫。如果交易失敗,系統就不會呼叫回呼。

如果回呼引發例外狀況,則例外狀況會正常出現。也就是說,如果系統立即呼叫回呼,該項回呼產生的任何例外狀況都會立即出現。如果系統等到修訂時才進行呼叫,則會略過剩餘的回呼,例外狀況也會透過 transaction() 呼叫出現 (不過交易此時已完成修訂)。

引數

回呼
回呼函式。這個回呼函式不採用任何參數,也不會傳回任何內容。
in_transaction()
如果此 Context 代表交易,則傳回 True,否則傳回 False

靜態方法

default_cache_policy(key)
檢查實體的模型類別是否含有 _use_cache 類別變數。如有,則傳回該變數。否則,請傳回 None
default_datastore_policy(key)
檢查實體的模型類別是否含有 _use_datastore 類別變數。如有,則傳回該變數。否則,請傳回 None
default_memcache_policy(key)
檢查實體的模型類別是否含有 _use_memcache 類別變數。如有,則傳回該變數。否則,請傳回 None
default_memcache_timeout_policy(key)
檢查實體的模型類別是否含有 _memcache_timeout 類別變數。如有,則傳回該變數。否則,請傳回 None