应用可以使用 Context 来控制其缓存政策。
Context
还为集成到 NDB 异步设施的 Memcache 和网址提取提供了方便的异步 API;具体来说,Memcache API 支持自动批处理功能。
- 缓存管理实例方法
- Memcache 和 Urlfetch 实例方法
- 事务管理方法
- 静态方法
缓存管理实例方法
- clear_cache()
- 清除上下文缓存。
- flush()
- 清空所有自动批处理程序队列(将队列的工作发送到服务器)。
清空操作会异步执行。
返回
Future
。要等待清空完成,请调用此对象的wait()
方法。 - get_cache_policy()
- 返回缓存政策函数。
此政策函数采用 Key 实例参数,并返回
bool
来指示是否应该在上下文缓存中缓存具有此键的实体。可能是None
(表示使用default_cache_policy
)。 - get_datastore_policy()
- 返回当前上下文 Datastore 政策函数。
此政策函数采用 Key 实例参数并返回
bool
来指示其是否应使用 Datastore。可能是None
(表示使用default_datastore_policy
)。 - get_memcache_policy()
- 返回当前的 Memcache 政策函数。
此政策函数采用 Key 实例参数并返回
bool
来指示是否应对其进行缓存。可能是None
(表示使用default_memcache_policy
)。 - get_memcache_timeout_policy()
- 返回当前的 Memcache 超时政策函数。
此政策函数采用 Key 实例参数,并返回需要的 Memcache 超时值(以秒为单位)或者返回零以使用默认超时值。可能是
None
,其使用default_memcache_timeout_policy
。 - set_cache_policy(func)
- 设置缓存政策函数。
参数
- func
- 此政策函数采用 Key 实例参数,并返回
bool
来指示具有此键的实体是否应缓存在上下文缓存中。可能是None
。
- set_datastore_policy(func)
- 设置 Datastore 政策函数。
参数
- func
- 此政策函数采用 Key 实例参数,并返回
bool
来指示具有此键的实体是否应存储在永久性 Datastore 中。可能是None
。
- set_memcache_policy(func)
- 设置 Memcache 政策函数。
参数
- func
- 此政策函数采用 Key 实例参数,并返回
bool
来指示具有此键的实体是否应缓存在上下文缓存中。可能是None
。
- set_memcache_timeout_policy(func)
- 设置 Memcache 超时政策函数。
参数
- func
- 此政策函数采用
Key
实例参数,并返回所需的 Memcache 超时值(以秒为单位),或者返回零以使用默认超时值。可能是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()
调用冒出。(但是,事务已在此时提交。)参数
- callback
- 回调函数。此回调函数不采用任何参数,也不返回任何值。
- in_transaction()
- 如果此上下文代表事务,则返回
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
。