烧杯后端将会话和缓存写入MongoDB无模式数据库。

mongodb_beaker的Python项目详细描述


配置

为了在你自己的项目中设置它以便烧杯能找到它,它必须 在setup.py文件中定义setuptools入口点。如果你安装 从卵子分布来看,mongodb嫒u beaker的setup.py应该创建一个 烧杯。后端入口点。如果你需要调整它/看看它是怎么做的 或者它不起作用,你需要定义你自己的, 我的看起来是这样的:

>>> entry_points="""
... [beaker.backends]
... mongodb = mongodb_beaker: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嫒u烧杯,分离 支持使用""而不是"."的数据库和集合,但已弃用。 语法为mongodb://<;hostname>;[:port]/<;database>;<;collection>;

除了数据库之外,您还必须为MongoDB定义一个存储数据的集合。

如果您想使用MongoDB的可选身份验证支持,那也是受支持的。简单地定义您的url:

>>> beaker.cache.navigation.url = mongodb://bwmcadams@passW0Rd?@localhost:27017/beaker.navigation

MongoDB\u烧杯后端将尝试使用用户名和 密码。必须为配置MongoDB的可选身份验证支持[2]\ 这样可以工作(默认情况下MongoDB不使用身份验证)。

< COL/> < COL/> <正文> < > <表>
[2] MongoDB认证文档: http://www.mongodb.org/display/docs/security+and+authentication
< COL/> < COL/> <正文> < > <表>

从辅助设备读取(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_u烧杯挂架应用程序配置有 以下会话配置:

>>> 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很容易高效地管理缓存。但是,在其他情况下 你可能想改变行为。这可能是出于效率的原因,或者是因为您担心文档太大。

在这种情况下,您可以启用"稀疏收集"模式,其中mongodb_u烧杯将为命名空间中的每个键创建一个文档。 启用稀疏集合时,文档的"\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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在EclipseIndigo上安装新的Glassfish服务器   java打印组织的最短方法是什么。w3c。多姆。文件发送到stdout?   安卓 java。lang.NullPointerException:尝试在oncreate方法中的null对象引用上调用virtual方法   linux java,我的线程无一例外地终止了,为什么?   JSON和Lombok构造函数的java问题Jackson反序列化   Spring引导升级后,java无法实例化自定义库的数据源   输入Kotlin中Java Scanner的等价物是什么?   列表vs数组作为java中递归的参数   创建名为“FilterService”的bean时发生java错误:通过字段“filterDAO”表示的未满足的依赖关系   如何在Java(基本上是Android)中将指纹图像的字节数组转换为iso 19794_2?   java如何使用基本适配器单击每个位置   java如何更新数据库显示消息“您的数据库已更新,没有任何错误,但实际上我的数据库未更新”   不同比例的安卓屏幕设备的java程序   java Android For循环,全局静态列表与本地列表