烧杯后端将会话和缓存写入MongoDB无模式数据库。
beaker_mongodb的Python项目详细描述
配置
为了在你自己的项目中设置它以便烧杯能找到它,它必须 在setup.py文件中定义setuptools入口点。如果你安装 从鸡蛋分布来看,烧杯MongoDB的setup.py应该创建一个 烧杯。后端入口点。如果你需要调整它/看看它是怎么做的 或者它不起作用,你需要定义你自己的, 我的看起来是这样的:
>>> entry_points=""" ... [beaker.backends] ... mongodb = beaker_mongodb:MongoDBNamespaceManager ... """,
定义了这个,烧杯应该在启动时自动找到入口点 (烧杯1.4和更高版本支持自定义入口点)并将其加载为可选 后端名为"MongoDB"。有几种配置烧杯的方法,我只 在这里覆盖ini文件(例如使用挂架)。还有更多配置 烧杯配置文档中的选项和详细信息 < COL/> < COL/> <正文> 烧杯的配置文件- http://beaker.groovie.org/configuration.htm <表>
我的一个应用程序中有几个缓存区域,其中一些是memcache,一些在mongodb上。区域配置如下:
>>> # new style cache settings ... beaker.cache.regions = comic_archives, navigation ... beaker.cache.comic_archives.type = libmemcached ... beaker.cache.comic_archives.url = 127.0.0.1:11211 ... beaker.cache.comic_archives.expire = 604800 ... beaker.cache.navigation.type = mongodb ... beaker.cache.navigation.url = mongodb://localhost:27017/beaker.navigation ... beaker.cache.navigation.expire = 86400
烧杯文档[1]包含有关配置区域的详细信息。这个 我们感兴趣的是烧杯、缓存、导航键。每个 烧杯缓存定义需要一个 类型 字段,该字段定义 使用。指定mongodb将(如果模块安装正确)告诉 烧杯通过MongoDB缓存。注意,如果烧杯不能加载延长件, 它会告诉您MongoDB是一个无效的后端。
expiration是标准的烧杯语法,尽管在 这个后端。
最后,您需要定义一个连接到MongoDB的URL。这遵循标准 MongoDB uri格式[3]\目前唯一支持的选项是"slaveok"。 为了向后兼容使用旧版本的烧杯MongoDB,分离 支持使用""而不是"."的数据库和集合,但已弃用。 语法为mongodb://<;hostname>;[:port]/<;database>;<;collection>;
除了数据库之外,您还必须为MongoDB定义一个存储数据的集合。
如果您想使用MongoDB的可选身份验证支持,那也是受支持的。简单地定义您的url:
>>> beaker.cache.navigation.url = mongodb://bwmcadams@passW0Rd?@localhost:27017/beaker.navigation
烧杯MongoDB后端将尝试使用用户名和 密码。必须为配置MongoDB的可选身份验证支持[2]\ 这样可以工作(默认情况下MongoDB不使用身份验证)。
[2] | MongoDB认证文档: http://www.mongodb.org/display/docs/security+and+authentication |
从辅助设备读取(slaveok)
如果您想启用从辅助站点(slaveok)读取,可以将其添加到您的url:
>>> beaker.cache.navigation.url = mongodb://bwmcadams@passW0Rd?@localhost:27017/beaker.navigation?slaveok=true
使用烧杯会话并禁用酸洗
如果您想节省一些CPU周期,并且可以保证 进来不是"蒙哥安全",不需要腌制,就是你知道 它已经腌制过了(例如在使用烧杯会话时),您可以设置 skip_pickle的额外烧杯配置标志=true。 告诫:要做到这一点 非常清楚,烧杯的时间已经过了,所以你想 将其配置为跳过pickle。重复pickle不会造成任何伤害, 但你肯定会浪费宝贵的CPU周期。浪费CPU周期是 在缓存系统中有点适得其反。
我的挂架在烧杯MongoDB上的应用配置有 以下会话配置:
>>> beaker.session.type = mongodb ... beaker.session.url = mongodb://localhost:27017/beaker.sessions ... beaker.session.skip_pickle = True
根据您的个人需要,您还可以创建 为您的缓存设置上限的集合(例如,memcache,仅限于最近使用的存储)
请参阅mongodb cappedcollection 。有关详细信息的文档。
稀疏集合支持
烧杯MongoDB的默认行为是为每个命名空间创建一个MongoDB文档,并存储每个 在该文档上缓存密钥/值。在这种情况下,文档的"\u id"将是名称空间,并且每个新的缓存条目 将附在该文档中。
这种方法在很多情况下都能很好地工作,并且使mongo很容易高效地管理缓存。但是,在其他情况下 你可能想改变行为。这可能是出于效率的原因,或者是因为您担心文档太大。
在这种情况下,您可以启用"稀疏收集"模式,其中beaker_mongodb将为命名空间中的每个键创建一个文档。 启用稀疏集合时,文档的"\u id"是一个包含命名空间和键的复合文档:
{ "_id" : { "namespace" : "testcache", "key" : "value" } }
该键的缓存数据将存储在文档字段"data"中。您可以在配置中使用 "稀疏集合"变量:
>>> beaker.session.type = mongodb ... beaker.session.url = mongodb://localhost:27017/beaker.sessions ... beaker.session.sparse_collections = True
以前版本用户的注意事项
由于错误修复和功能原因,MongoDB烧杯0.5+与以前版本创建的缓存不兼容。 因为这是缓存数据,应该没什么大不了的。我们建议删除或刷新整个缓存集合 升级到0.5+之前,请注意它将生成新的缓存。
[3] | MongoDB的uri格式:http://www.mongodb.org/display/docs/connections rel="nofollow">http://www.mongodb.org/display/docs/connections |