Python Django Memcached酸洗错误

Python Django Memcached酸洗错误,python,django,memcached,Python,Django,Memcached,我是Django的新手,我正在尝试使用内置缓存系统。我正在使用Django 1.4 我的目标 在我看来,我想缓存对外部API的调用。因此,我想使用cache.get()和cache.set() 我的方法 1) 我安装了pylibmc和python memcached 2) 在我的设置中,我添加了: CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache',

我是Django的新手,我正在尝试使用内置缓存系统。我正在使用Django 1.4

我的目标 在我看来,我想缓存对外部API的调用。因此,我想使用
cache.get()
cache.set()

我的方法 1) 我安装了pylibmc和python memcached

2) 在我的设置中,我添加了:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache',
        # i also tried 'django.core.cache.backends.memcached.MemcachedCache'
        'LOCATION': '127.0.0.1:11211',
    }
}
3) 在我看来,我补充说:

myData = cache.get('myKey')
if not myData:
    myData = myApiCall()
    cache.set('myKey', myData)
4) myApiCall()是lastfm库的方法调用:

api_key = '12345678901234567890'
api = lastfm.Api(api_key)
user = api.get_user('aLastFmUser')
myData = user.top_artists # this is the relevant line
问题 我在使用pylibmc缓存后端时收到此错误消息:

cPickle.PicklingError
PicklingError: Can't pickle <type 'module'>: attribute lookup __builtin__.module failed
TypeError
TypeError: can't pickle module objects
显然,酸洗/序列化出错了。这里发生了什么?

多亏了我找到了解决方案:

酸洗对象可能会导致错误,因此将所需数据提取到列表或目录更可靠。

多亏了“我找到了解决方案”:


pickle对象可能会导致错误,因此将所需数据提取到列表或目录更可靠。

myApiCall()返回什么?看起来您实际上是在尝试将函数/模块存储在缓存中,而不是调用函数的结果我更新了我的问题。因此不可能在缓存中存储对象?是否唯一可以创建dict并将所有相关数据放入其中,以便我将其存储在缓存中?您可能应该使用
user.top\u artists()
(注意括号)现在我得到了这个错误:
TypeError:“list”对象是不可调用的
,据我所知
top\u artists
是一个
Artist
对象的列表。您真的需要用这些对象的所有属性和方法对其进行pickle吗?我认为不是,所以只提取所需的数据(例如艺术家姓名和播放次数)并将其缓存。如果仍然需要缓存对象列表,请深入api代码并找到问题所在。:-)
myApiCall()
返回什么?看起来您实际上是在尝试将函数/模块存储在缓存中,而不是调用函数的结果我更新了我的问题。因此不可能在缓存中存储对象?是否唯一可以创建dict并将所有相关数据放入其中,以便我将其存储在缓存中?您可能应该使用
user.top\u artists()
(注意括号)现在我得到了这个错误:
TypeError:“list”对象是不可调用的
,据我所知
top\u artists
是一个
Artist
对象的列表。您真的需要用这些对象的所有属性和方法对其进行pickle吗?我认为不是,所以只提取所需的数据(例如艺术家姓名和播放次数)并将其缓存。如果仍然需要缓存对象列表,请深入api代码并找到问题所在。:-)