Nameko Redis Keyspace Notifications 扩展。
项目描述
用法
此 Nameko 扩展增加了订阅事件、键和数据库的能力。
一些事件示例
expire 事件由 EXPIRE 命令触发
expired 事件在键因过期而被删除时触发
用法示例
from nameko_rediskn import rediskn, REDIS_PMESSAGE_TYPE class MyService: name = 'my-service' @rediskn.subscribe(uri_config_key='MY_REDIS', keys='foo/bar-*') def subscriber(self, message): if message['type'] != REDIS_PMESSAGE_TYPE: return event_type = message['data'] if event_type != 'expired': return key = message['channel'].split(':')[1] # ...
其中 subscribe 接受
MY_REDIS,这是指Redis URI的属性名(见下面的 配置 部分)。
将事件(events)、键(keys)和数据库(dbs)作为单个值(字符串)或订阅值的列表。它们都是可选的,但至少必须提供其中之一。
更多详细信息,请参阅 RedisKNEntrypoint 入口的文档。
注意:此依赖项不具有“集群感知”功能,将在所有服务实例上触发。有几种解决方法:使用 ddebounce 是其中之一。
配置
Nameko 配置文件
# config.yaml REDIS: notification_events:
"KEA"pubsub_backoff_factor: 3 REDIS_URIS: MY_REDIS:"redis://localhost:6380/0"
REDIS[notification_events] 是可选的,可以省略或仅包含 None。否则,它必须具有有效的值用于 Redis 客户端配置属性 'notify-keyspace-events'。这最好在服务器端设置,因为在一个 Redis 客户端中设置它将影响其他客户端。
REDIS[pubsub_backoff_factor] 设置错误发生时重新连接到 Redis 的指数退避因子。如果在监听 Redis 事件时发生错误,我们将休眠 backoff_factor * 2 ** (n - 1),其中 n 是已发生的连续错误次数。如果省略,则默认为 2。
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。
也可以使用 ARGS 变量提供额外的 pytest 参数。
$ make test RABBIT_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.11、2.12。
然而,此扩展至少从 Nameko 2.6 版本开始即可使用。
Redis 支持
以下 Redis Python 版本正在积极支持:2.10、3.0、3.1、3.2。
Redis 4.0 正在积极支持。
变更日志
请参阅 CHANGELOG 文档以了解每个版本的修复和增强。
许可证
MIT 许可证。有关详细信息,请参阅 LICENSE。
项目详情
nameko-rediskn-0.1.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7503369f7d48d61fef3e41dce355d429a61b2411a56c6fa0534767047b44048e |
|
MD5 | 9405546a43b7b24a2b3da20358cca26c |
|
BLAKE2b-256 | 8de799218e19a6a93cfb8d0d7420f41ba809c692f649e938ea0ea67ad2807f2f |
nameko_rediskn-0.1.1-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2ac1a473470ee86dca3d4c3617cc888c3fcb24d013e0f0eb7868b730b21bbae4 |
|
MD5 | 29625b01efb0ad609070620851983839 |
|
BLAKE2b-256 | bdf345494ed5ff30cbcc6c2b3b40aed43228573fa26682d5bf13d0d5f36b8b24 |