Python Django Memcached酸洗错误
我是Django的新手,我正在尝试使用内置缓存系统。我正在使用Django 1.4 我的目标 在我看来,我想缓存对外部API的调用。因此,我想使用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',
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代码并找到问题所在。:-)