Nameko redis keyspace notifications extension.
nameko-rediskn的Python项目详细描述
NamekoRedis Keyspace Notifications extension.
用法
这个Nameko扩展添加了订阅事件、键和 数据库。
一些事件示例:
- expire为EXPIRE命令激发的事件
- expired由于过期而删除密钥时激发的事件
用法示例:
fromnameko_redisknimportrediskn,REDIS_PMESSAGE_TYPEclassMyService:name='my-service'@rediskn.subscribe(uri_config_key='MY_REDIS',keys='foo/bar-*')defsubscriber(self,message):ifmessage['type']!=REDIS_PMESSAGE_TYPE:returnevent_type=message['data']ifevent_type!='expired':returnkey=message['channel'].split(':')[1]# ...
其中subscribe接受:
- MY_REDIS,它是指redis uri的属性名 (见下面的Configuration部分)。
- events、keys和dbs作为单个值(字符串)或 要订阅的值列表。它们都是可选的,但至少有一个 必须提供这些参数中的一个。
有关详细信息,可以查看 RedisKNEntrypoint入口点。
注意:此依赖项不是“群集感知”的,并在所有服务上激发 实例。有不同的解决方法:使用ddebounce是 其中一个。
配置
Nameko配置文件:
# config.yamlREDIS:notification_events:"KEA"REDIS_URIS:MY_REDIS:"redis://localhost:6380/0"
REDIS[notification_events]是可选的,可以省略,也可以只是 包含None。否则,它必须具有 'notify-keyspace-events'redis客户端配置属性。这个 应该在服务器端进行理想设置,如在 redis客户端将影响其他客户端。
REDIS_URIS遵循Nameko Redis使用的配置格式 依赖项提供程序,其中MY_REDIS只是属性名 引用正在使用的实例的redis uri。
测试
rabbitmq应该在默认uri上启动并运行 guest:guest@localhost并使用默认端口。
redis也应该在默认端口上运行。
有makefile目标同时运行rabbitmq和redis docker 本地使用默认端口和配置的容器:
$ make rabbitmq-container $ make redis-container
应设置并更新虚拟环境:
$ # Create/activate a virtual environment
$ pip install -U pip setuptools wheel
tox可用于运行测试。建议 依赖项(特别是virtualenv)是最新的,因此它使用 库的正确版本,如pip、setuptools和 wheel:
$ pip install -U --upgrade-strategy=eager tox $ tox $ tox -e "py37-namekolatest-redislatest-test"
还有其他makefile目标可用于运行测试,但是 必须安装额外的依赖项,包括 开发模式:
$ pip install -U --editable ".[dev]" $ make test $ make coverage
可以提供一个不同的rabbitmq uri,覆盖以下内容 环境变量:RABBIT_CTL_URI和AMQP_URI。
还可以使用^{tt24}提供附加的pytest参数$ 变量:
$ make testRABBIT_CTL_URI=http://guest:guest@localhost:15673 AMQP_URI=amqp://guest:guest@localhost:5673 ARGS='-x -vv --disable-warnings' $ make coverage RABBIT_CTL_URI=http://guest:guest@localhost:15673 AMQP_URI=amqp://guest:guest@localhost:5673 ARGS='-x -vv --disable-warnings'
起毛
使用tox:
$ for env in $(tox -l - | grep linting);do tox -e $env;done
更改日志
请参阅CHANGELOG文档,以获取每个 版本。
许可证
麻省理工学院的执照。有关详细信息,请参见LICENSE。