跳转到主要内容

Nameko Redis Keyspace Notifications 扩展。

项目描述

Nameko Redis Keyspace Notifications 扩展。

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

用法

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)都是最新的,以便它使用正确的库版本,如 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

也可以使用 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.112.12

然而,此扩展至少从 Nameko 2.6 版本开始即可使用。

Redis 支持

以下 Redis Python 版本正在积极支持:2.103.03.13.2

Redis 4.0 正在积极支持。

变更日志

请参阅 CHANGELOG 文档以了解每个版本的修复和增强。

许可证

MIT 许可证。有关详细信息,请参阅 LICENSE

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

nameko-rediskn-0.1.1.tar.gz (8.2 kB 查看哈希值)

上传时间

构建分布

nameko_rediskn-0.1.1-py3-none-any.whl (7.9 kB 查看哈希值)

上传时间 Python 3

支持