redis

class litestar.channels.backends.redis.RedisChannelsBackend

基类:ChannelsBackend, ABC

__init__(*, redis: Redis, key_prefix: str, stream_sleep_no_subscriptions: int) None

基于 Redis 通道的后端。 Args: redis: 一个 redis.asyncio.Redis 实例 key_prefix: 用于在 Redis 中存储数据的键前缀 stream_sleep_no_subscriptions: 当没有订阅者时,暂停 stream_events() 生成器的时间(单位:毫秒)

class litestar.channels.backends.redis.RedisChannelsPubSubBackend

基类:RedisChannelsBackend

__init__(*, redis: Redis, stream_sleep_no_subscriptions: int = 1, key_prefix: str = 'LITESTAR_CHANNELS') None

Redis 频道后端,Pub/Sub。 该后端提供低开销和资源占用,但不支持历史记录。 Args: redis: 一个 redis.asyncio.Redis 实例 key_prefix: 用于在 Redis 中存储数据的键前缀 stream_sleep_no_subscriptions: 当不存在订阅者时,暂停 stream_events() 生成器的时间(毫秒)

async on_startup() None

Called by the plugin on application startup

async on_shutdown() None

Called by the plugin on application shutdown

async subscribe(channels: Iterable[str]) None

订阅 channels,并启用向它们发布消息的功能

async unsubscribe(channels: Iterable[str]) None

停止在 channels 上监听事件

async publish(data: bytes, channels: Iterable[str]) None

data 发布到 channels .. note:: 此操作使用 Lua 脚本原子性地执行

async stream_events() AsyncGenerator[tuple[str, Any], None]

返回一个生成器,迭代订阅通道的可用事件。 如果尚未通过 subscribe() 订阅任何通道,则休眠 stream_sleep_no_subscriptions 毫秒。

async get_history(channel: str, limit: int | None = None) list[bytes]

未实现

class litestar.channels.backends.redis.RedisChannelsStreamBackend

基类:RedisChannelsBackend

__init__(history: int, *, redis: Redis, stream_sleep_no_subscriptions: int = 1, cap_streams_approximate: bool = True, stream_ttl: int | timedelta = datetime.timedelta(seconds=60), key_prefix: str = 'LITESTAR_CHANNELS') None

Redis 频道后端,基于 streams。 Args: history: 保留的消息数量。这将为流(streams)设置 MAXLEN。 redis: 一个 redis.asyncio.Redis 实例。 key_prefix: 用于流(streams)的键前缀。 stream_sleep_no_subscriptions: 当不存在订阅者时,暂停 stream_events() 生成器的时间(毫秒)。 cap_streams_approximate: 使用 ~ 近似运算符设置流的 MAXLEN,以提升性能。 stream_ttl: 流的生存时间(TTL),单位为毫秒或 timedelta 对象。每次发布操作时,将使用 PEXPIRE 设置流的 TTL。

async on_startup() None

在应用程序启动时调用

async on_shutdown() None

在应用程序关闭时调用

async subscribe(channels: Iterable[str]) None

订阅 channels

async unsubscribe(channels: Iterable[str]) None

channels 取消订阅

async publish(data: bytes, channels: Iterable[str]) None

data 发布到 channels。 .. note:: 此操作使用 Lua 脚本原子性地执行。

async stream_events() AsyncGenerator[tuple[str, Any], None]

返回一个生成器,迭代订阅通道的可用事件。 如果尚未通过 subscribe() 订阅任何通道,则休眠 stream_sleep_no_subscriptions 毫秒。

async get_history(channel: str, limit: int | None = None) list[bytes]

返回 channels 的历史记录,最多返回 limit 条消息。

async flush_all() int

删除所有带有 key_prefix 的流键。 .. important:: 此方法与 Redis 集群不兼容