烧杯后端将会话和缓存写入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不使用身份验证)。

< 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上的应用配置有 以下会话配置:

>>> 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

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

推荐PyPI第三方库


热门话题
JavaMaven没有识别junit测试   正则表达式替换Java中字符串中的所有“(“and”)”   文件移动到另一台计算机时出现java错误“实例化servlet类”   服务器上的java服务   Spring数据JPA上的java嵌套@Transactional注释行为   eclipse中的Java Tomcat项目   java在Tomcat上部署web应用程序   如何解决“java.lang.IllegalStateException:ArrayAdapter要求资源ID为TextView”错误?   java在条形码上方添加文本,并使用烧烤更改字体大小   java与php基准测试   java使用正则表达式提取特定模式   java扫描器。findInLine()大量泄漏内存   java HTTP:差异请求属性和POST参数   返回空指针的Java方法?   java验证密码不包含名称中的3个以上连续字符   Java中带泛型的静态多态性   java在Android中获得最后一个已知位置   java为什么Groovy的Map比Array更具可伸缩性?   编码如何在Java中生成八进制字符串?   java Hibernate:使用单例会话写入日志(无刷新)