如何在Pylons中缓存列表/字典?

时间:2010-08-13 04:19:29

标签: python caching pylons

在我正在制作的网站上,有一个部分可以很难打到数据库。比我想要的更难。正在检索的数据都是非常静态的。它很少会改变。所以我想缓存它。

我遇到了http://wiki.pylonshq.com/display/pylonsdocs/Caching+in+Templates+and+Controllers并且阅读得很好,一直在使用模板缓存:

return render('tmpl.html', cache_expire='never')

在我修改HTML之前,这很有用。我发现删除缓存的唯一方法是从render()中删除cache_expire参数并删除缓存文件夹。但是,嗯,它有效。

然而,我想要的是缓存列表,元组和字典。从阅读上面的维基页面看,这似乎不可能?

我希望能够做到这样的事情:

data    = [i for i in range(0, 2000000)]
mycache = cache.get_cache('cachename')

value = mycache.get(key='dataset1', list=data, type='memory', expiretime='3600')

print value

允许我做一些CPU密集型工作(在本例中为列表生成),然后缓存它。

这可以用Pylons完成吗?

2 个答案:

答案 0 :(得分:1)

作为传统缓存的替代方法,您可以使用app全局变量。一旦在服务器启动时将数据加载到变量,然后在您的操作中使用数据或直接在模板中。

http://pylonsbook.com/en/1.1/exploring-pylons.html#app-globals-object

此外,您可以编写一些操作来通过管理界面或其他事件更新此全局变量。

答案 1 :(得分:1)

为什么不使用memcached?
请看一下关于如何在塔上使用它的问题:Pylons and Memcached