我正在尝试将 memcached 与 Google App Engine 结合使用。我使用导入库
从 google.appengine.api 导入内存缓存
然后使用
调用它posts = memcache.gets("posts")
然后我收到以下错误:
AttributeError:“模块”对象没有属性“gets”
我浏览了有关 memcache 的 Google App Engine 文档,但找不到任何使用 memcache.gets() 的示例。 Memcache.get() 似乎是按照我上面调用 gets 的方式使用的。
最佳答案
gets
是 memcache
客户端对象的方法,不是memcache 的模块级函数。模块级功能非常简单、无状态、同步;使用客户端对象,如果需要的话,您可以做更高级的事情,如 https://cloud.google.com/appengine/docs/python/memcache/clientclass 中所述。 .
具体来说,根据 https://cloud.google.com/appengine/docs/python/memcache/clientclass#Client_gets 的文档,“如果您想避免两个或多个调用者尝试同时修改相同键值的情况,则使用“gets
”而不是get
,从而导致到不希望的覆盖。”因为 gets
还获取(并存储在客户端对象中)cas_id
,它允许您使用 cas
(比较和设置)调用(您不必自己显式处理 cas_id
)。
由于您似乎没有尝试比较和设置操作,因此我建议使用更简单的模块级函数 get
,而不是实例化客户端对象并使用其实例方法获取
。
关于python - 使用 memcache.gets() 时出现 AttributeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27783240/