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使用Jackson生成所需的JSON响应   使用XMLStreamWriter将java附加到XML   java找不到适用于addAll的方法(List<Integer>)   java如何保存以前在GridLayout上单击过的组件的位置   如何从其他类修改arraylist?JAVA   java Spring引导和GCP连接云SQL实例和springcloudgcpstartersqlpostgresql尝试SSL,但延迟启动   javascript为什么Java无限循环是可能的?对此有什么建议   java如何更改书写器的颜色。普林顿   LinkedBlockingQueue的java内部工作   Java方法从未到达(?)大体上   java Android地图视图未加载内容   正则表达式Java条件   java如何在Javadoc中格式化包含@和{符号的代码段?   excel用Java从Office和PDF文件中提取文本   java音乐无法在可执行文件中播放。Jar文件   java为什么视图没有更新?   googleoauthjavaclient因twitch而失败   java加载纹理LWJGL