AttributeError: '模块'对象没有属性'gets' memcache GAE

0 投票
1 回答
3090 浏览
提问于 2025-04-18 05:50

我有一个简单的Python程序,它使用了GAE(谷歌应用引擎),并且我在用GAE的内存缓存模块来确保在更新缓存时不会出错:

from google.appengine.api import memcache

class NewPost(BlogHandler):
    def get(self):
        self.render("newpost.html")

    def post(self):

        #update cache for the front page
        val, unique = memcache.gets(FRONT_PAGE_KEY)
        for p in val:
            logging.warning(p)

现在这段代码应该可以正常运行,但当我使用post方法时,却出现了问题:

Traceback (most recent call last):
  File "/home/pedro/google_appengine/google/appengine/runtime/wsgi.py", line 266, in Handle
    result = handler(dict(self._environ), self._StartResponse)
  File "/home/pedro/google_appengine/lib/webapp2-2.3/webapp2.py", line 1519, in __call__
    response = self._internal_error(e)
  File "/home/pedro/google_appengine/lib/webapp2-2.3/webapp2.py", line 1511, in __call__
    rv = self.handle_exception(request, response, e)
  File "/home/pedro/google_appengine/lib/webapp2-2.3/webapp2.py", line 1505, in __call__
    rv = self.router.dispatch(request, response)
  File "/home/pedro/google_appengine/lib/webapp2-2.3/webapp2.py", line 1253, in default_dispatcher
    return route.handler_adapter(request, response)
  File "/home/pedro/google_appengine/lib/webapp2-2.3/webapp2.py", line 1077, in __call__
    return handler.dispatch()
  File "/home/pedro/google_appengine/lib/webapp2-2.3/webapp2.py", line 547, in dispatch
    return self.handle_exception(e, self.app.debug)
  File "/home/pedro/google_appengine/lib/webapp2-2.3/webapp2.py", line 545, in dispatch
    return method(*args, **kwargs)
  File "/home/pedro/google_appengine/hw6/blog.py", line 172, in post
    val, unique = memcache.gets(FRONT_PAGE_KEY)
AttributeError: 'module' object has no attribute 'gets'
INFO     2014-05-08 13:36:49,525 module.py:639] default: "POST /blog/newpost HTTP/1.1" 500 -

这完全没有道理,特别是因为我知道内存缓存有一个叫做 gets(key) 的方法:

根据我在stackoverflow上的研究,我找到了这个讨论:

所以我已经清空了我的缓存,并删除了所有本地数据库的内容,但我仍然遇到这个错误。

我到底哪里做错了呢?

1 个回答

4

你搞错了:memcache 模块里其实没有 gets 这个功能。你可以查看一下 这份文档

gets 是 memcache 的 Client 对象里的一个方法:同样,你可以看看 这份文档

撰写回答