Nameko redis keyspace notifications extension.

nameko-rediskn的Python项目详细描述


NamekoRedis Keyspace Notifications extension.
https://img.shields.io/pypi/v/nameko-rediskn.svghttps://img.shields.io/pypi/pyversions/nameko-rediskn.svghttps://img.shields.io/pypi/format/nameko-rediskn.svghttps://travis-ci.org/sohonetlabs/nameko-rediskn.svg?branch=masterhttps://img.shields.io/badge/code%20style-black-000000.svg

用法

这个Nameko扩展添加了订阅事件、键和 数据库。

一些事件示例:

  • expireEXPIRE命令激发的事件
  • 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部分)。
  • eventskeysdbs作为单个值(字符串)或 要订阅的值列表。它们都是可选的,但至少有一个 必须提供这些参数中的一个。

有关详细信息,可以查看 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)是最新的,因此它使用 库的正确版本,如pipsetuptoolswheel

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

nameko支持

以下Nameko版本受到积极支持:2.112.12

但是,这个扩展至少应该从Nameko^{tt28}开始工作$ 向前。

redis支持

以下Redis Python版本受到积极支持:2.103.03.13.2

Redis4.0被积极支持。

更改日志

请参阅CHANGELOG文档,以获取每个 版本。

许可证

麻省理工学院的执照。有关详细信息,请参见LICENSE

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

推荐PyPI第三方库


热门话题
java Swing会在减少Windows时间后忽略第一次单击   java使用Jsoup从网页获取价格   JavaSpringbeans,使它们可用于其他类?我的组件为空?   java如何实现Servlet的渐进响应?   java使3个视图可见,然后根据条件隐藏其他视图   列出如何根据Java中ArrayList的大小为变量分配字符?   将p5js草图转换为处理的javascript问题   java如何在推送时对mongodb中的数组元素进行排序?   Java中基于字段将csv文件拆分为多个文件   java boolean onClickEventListener返回的目的   java开关和if/else的哪种组合更快?为什么?   java在其他静态方法中调用局部变量?   编码风格Java枚举应该在它们自己的文件中定义吗?   java绘制jtable单元格编辑器(位于jtable上方)   java是否可以在tomcat中编辑类文件并重新编译单个文件?   java使用基类中泛型方法的方法引用,这给了我NoSuchMethodError   Java泛型与使用参数化类有关   Java类型转换的加密输出   我对eclipse上的以下Java代码有一个问题(无法访问的代码)