應用程式可透過「Context」控管其快取政策。Context
也提供方便的非同步 API,可用於 Memcache 和網址擷取,並整合至 NDB 的非同步設施;特別是 Memcache API 支援自動批次處理。
- 快取管理例項方法
- Memcache 和 Urlfetch 例項方法
- 交易管理方法
- 靜態方法
快取管理執行個體方法
- 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_policy
的None
。 - 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
。