如何在Pyramid中进行缓存?

3 投票
2 回答
4596 浏览
提问于 2025-04-17 09:07

我查了一下文档,没看到(乍一看)关于Pyramid框架的缓存内容。可能是我漏掉了什么……或者也许有一些第三方的包可以帮助实现这个功能。

比如说,怎么缓存数据库查询(SQLAlchemy),或者怎么缓存视图?有没有人能给我一些示例链接或者文档?

非常感谢任何帮助!

编辑:

怎么使用memcache、数据库类型的缓存或者基于文件的缓存呢?

2 个回答

6

你有两个选择:pyramid_beaker 和 dogpile.cache。

pyramid_beaker 是为了提供会话的缓存功能而写的。它还允许你配置缓存区域,这些区域可以在其他地方使用。

dogpile.cache 是 beaker 的替代品。它还没有集成会话支持或者基于 environment.ini 的设置。不过,它解决了很多 beaker 的杂七杂八的问题和不足之处。

你不能也不应该缓存 SqlAlchemy 的查询或结果。这样做会出现奇怪和糟糕的情况,因为 SqlAlchemy 对象是绑定在数据库会话上的。更好的做法是把 SqlAlchemy 的结果转换成其他对象或字典,然后缓存这些。

6

你需要安装 pyramid_beaker

然后阅读一下 beaker 的文档。默认情况下,它使用的是基于内存的缓存,但它也很容易支持 memcached 和基于文件的缓存。

撰写回答