plugin¶
- class litestar.channels.plugin.ChannelsPlugin¶
基类:
InitPlugin,AbstractAsyncContextManager- __init__(backend: ChannelsBackend, *, channels: Iterable[str] | None = None, arbitrary_channels_allowed: bool = False, create_ws_route_handlers: bool = False, ws_handler_send_history: int = 0, ws_handler_base_path: str = '/', ws_send_mode: WebSocketMode = 'text', subscriber_max_backlog: int | None = None, subscriber_backlog_strategy: BacklogStrategy = 'backoff', subscriber_class: type[Subscriber] = <class 'litestar.channels.subscriber.Subscriber'>, type_encoders: TypeEncodersMap | None = None) None¶
用于通过 WebSocket 进行广播并支持通道的插件。 该插件可通过
channels键作为注入依赖使用。 Args: backend: 用于存储数据的后端 channels: 要服务的通道列表。如果arbitrary_channels_allowed为False``(默认值),尝试订阅不在 ``channels中的通道将引发异常 arbitrary_channels_allowed: 允许动态创建通道 create_ws_route_handlers: 如果为True,将为channels中定义的所有通道创建 WebSocket 路由处理器。如果arbitrary_channels_allowed为True,则只创建一个处理器来处理所有通道。创建的处理器将接受 WebSocket 连接,并开始向其各自通道发送接收到的事件。 ws_handler_send_history: 客户端连接后,从生成的 WebSocket 路由处理器发送的历史记录条目数量。值为0表示不发送历史记录 ws_handler_base_path: 用于生成路由处理器的路径前缀 ws_send_mode: 通过WebSocket发送数据时使用的发送模式。该模式将在生成的路由处理器内部或Subscriber.run_in_background()发送数据时使用 subscriber_max_backlog: 为给定订阅者在内存中保留的未发送消息的最大数量。如果达到该限制,新消息将根据backlog_strategy进行处理 subscriber_backlog_strategy: 定义当订阅者的max_backlog达到上限时的行为。backoff将导致新消息被丢弃,直到旧消息被处理完毕;dropleft将丢弃旧消息以保留新消息 subscriber_class: 从subscribe()返回的Subscriber子类 type_encoders: 用于在发送前编码数据的额外类型编码器映射
- publish(data: LitestarEncodableType, channels: str | Iterable[str]) None¶
安排将
data发布到channels。 .. note:: 这是一个同步方法,会立即返回。无法保证当此方法返回时,数据已被发布到后端。如需等待发布完成,请使用wait_published()。
- async wait_published(data: LitestarEncodableType, channels: str | Iterable[str]) None¶
将
data发布到channels
- async subscribe(channels: str | Iterable[str], history: int | None = None) Subscriber¶
创建
Subscriber,提供channels中所有事件的流。 创建的订阅者默认是被动式的,必须手动消费,可以通过使用Subscriber.run_in_background()或使用Subscriber.iter_events()迭代事件来实现。 Args: channels: 要订阅的通道(一个或多个) history: 如果为非负整数,则从每个通道添加指定数量的历史条目到订阅者的事件流中。请注意,这将等待直到所有历史条目被获取并推送到订阅者的流中。如需更多控制,请使用put_subscriber_history()。 Returns: 一个SubscriberRaises: ChannelsException: 如果channels中的某个通道未在此后端上声明,且arbitrary_channels_allowed未设置为True
- async unsubscribe(subscriber: Subscriber, channels: str | Iterable[str] | None = None) None¶
从
channels取消订阅一个Subscriber。如果该订阅者有正在运行的发送任务,它将被停止。 Args: channels: 要取消订阅的频道。如果为None,则取消订阅所有频道 subscriber: 要取消订阅的Subscriber
- start_subscription(channels: str | Iterable[str], history: int | None = None) AsyncGenerator[Subscriber, None]¶
创建一个
Subscriber并将其订阅绑定到一个上下文管理器; 退出上下文时,将调用unsubscribe()。 Args: channels: 要订阅的频道(一个或多个) history: 如果为非负整数,则从每个频道添加指定数量的历史记录条目到订阅者的事件流中。请注意,这将等待所有历史记录条目被获取并推送到订阅者的流中。如需更精细的控制,请使用put_subscriber_history()。 Returns: 一个Subscriber
- class litestar.channels.plugin.ChannelsException¶