带有可插入后端的实时应用程序设置,包括redis和mongodb。

waterbo的Python项目详细描述


将“实时”应用程序设置存储在键/值数据存储区中。

这原本是django-constance的叉,但现在独立于 django本质上是原始库的键/值抽象部分。

当前支持的后端:redis和mongodb。

使用Python2.7和Python3.4进行测试。

源位于github

安装

$ pip install waterboy

用法

在应用程序中,定义要编辑的设置:

CONFIG = {
    '<KEY>': <DEFAULT>,
    ...
}

例如:

CONFIG = {
    'INT_VALUE': 1,
    'LONG_VALUE': 100000000,
    'BOOL_VALUE': True,
    'STRING_VALUE': 'Hello world',
    'UNICODE_VALUE': six.u('Rivière-Bonjour'),
    'DECIMAL_VALUE': Decimal('0.1'),
    'DATETIME_VALUE': datetime(2010, 8, 23, 11, 29, 24),
    'FLOAT_VALUE': 3.1415926536,
    'DATE_VALUE': date(2010, 12, 24),
    'TIME_VALUE': time(23, 59, 59),
}

然后基于这些初始设置创建一个配置对象。例如,使用redis:

>>> from waterboy import RedisConfig
>>> cfg = RedisConfig(initial=CONFIG)

然后通过属性样式访问从后端检索设置:

>>> cfg.INT_VALUE
1

如果后端返回none,则返回默认值。

类似地,在config对象上设置一个属性将透明地“upsert” (更新或插入)后端中的值。

尝试获取或设置配置对象上的值将失败,并显示AttributeRor 如果初始缺省字典中不存在密钥:

>>> cfg.ABCD = 'abcd'
Traceback (most recent call last):
  ...
AttributeError: 'RedisConfig' object has no attribute 'ABCD'

但是,可以通过将strict=false传递给配置构造函数来修改此行为:

>>> cfg = RedisConfig(initial=CONFIG, strict=False)

这将导致存在性检查被绕过:

>>> cfg.ABCD = 'abcd'

开发

克隆并运行测试:

$ git clone git@github.com:gmflanagan/waterboy.git
$ cd waterboy
$ make test

检测是通过毒物和脓毒性试验进行的。

如果redis和mongo没有在声明的端口上运行,那么 这些后端将被跳过。有关默认端口,请参见makefile。

要在本地安装redis和mongo,请运行buildout:

$ make buildout

然后使用以下命令在前台运行redis:

$ make redis

以及MongoDB的:

$ make mongod

现在运行所有测试:

$ make test

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

推荐PyPI第三方库


热门话题
windows请帮助获取java。运行程序时发生lang.nullpointerexception   JPA标准中的错误:java。lang.IllegalArgumentException:此JPQLquery中没有名为“:inputMsgId_1_”的参数   java调度一个小程序,从ScheduledExecutorService开始   java点击AVD“创建设备”按钮抛出NullPointerException   缓存Java9WebStart会多次加载jar文件   使用java计算最小二乘   当代理关闭时,java kafka生产者不会抛出异常   我们什么时候以及为什么要在java中进行自定义序列化?   java使用GSON解析包含包含所需字符串的对象的对象数组   java如何使用BOBJ REST API实现分页?   java身份验证失败:用户的凭据已过期。CAS v4。2.   合并排序中的java无限循环?   java jackson xml将pojo子元素转换为字符串   tcp Java ObjectOutputStream重置错误   如何调用。bat文件,并使用java中的ProcessBuilder发送字符串   奇怪的Java数学结果   java如何在Android中禁用最近的活动按钮?   java刷下应用程序崩溃   使用Java收集所有VersionOne资产及其所有属性   Java打印:创建具有最小可接受边距的页面格式