带有可插入后端的实时应用程序设置,包括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