bokeh.protocol#
实现并提供 Bokeh 服务器和客户端之间通信的消息协议。
- class Protocol[源代码]#
为 Bokeh 服务器消息协议提供消息工厂。
- assemble(header_json: str, metadata_json: str, content_json: str) Message[Any] [源代码]#
创建从 JSON 片段组装而成的 Message 实例。
- 参数:
header_json (
JSON
)metadata_json (
JSON
)content_json (
JSON
)
- 返回值:
消息
- create(msgtype: Literal['ACK'], **metadata: Any) ack [源代码]#
- create(msgtype: Literal['ERROR'], request_id: ID, text: str, **metadata: Any) error
- create(msgtype: Literal['OK'], request_id: ID, **metadata: Any) ok
- create(msgtype: Literal['PATCH-DOC'], events: list[DocumentPatchedEvent], **metadata: Any) patch_doc
- create(msgtype: Literal['PULL-DOC-REPLY'], request_id: ID, document: Document, **metadata: Any) pull_doc_reply
- create(msgtype: Literal['PULL-DOC-REQ'], **metadata: Any) pull_doc_req
- create(msgtype: Literal['PUSH-DOC'], document: Document, **metadata: Any) push_doc
- create(msgtype: Literal['SERVER-INFO-REPLY'], request_id: ID, **metadata: Any) server_info_reply
- create(msgtype: Literal['SERVER-INFO-REQ'], **metadata: Any) server_info_req
为给定类型创建新的 Message 实例。
- 参数:
msgtype (str)
bokeh.protocol.exceptions#
提供与处理 Bokeh 协议消息相关的命名异常。
bokeh.protocol.message#
提供所有 Bokeh 服务器协议消息类型的基类。
Boker 消息由一系列 JSON 片段组成。指定为 Python 类 JSON 数据,消息具有以下通用形式:
[
# these are required
b'{header}', # serialized header dict
b'{metadata}', # serialized metadata dict
b'{content}', # serialized content dict
# these are optional, and come in pairs; header contains num_buffers
b'{buf_header}', # serialized buffer header dict
b'array' # raw buffer payload data
...
]
header
片段将具有以下形式:
header = {
# these are required
'msgid' : <str> # a unique id for the message
'msgtype' : <str> # a message type, e.g. 'ACK', 'PATCH-DOC', etc
# these are optional
'num_buffers' : <int> # the number of additional buffers, if any
}
metadata
片段可能包含任何任意信息。Bokeh 不会出于任何目的处理它,但可能对外部监控或仪器工具有用。
content
片段由特定消息类型定义。
- class Message(header: Header, metadata: dict[str, Any], content: Content)[source]#
Message 基类封装了创建、组装和验证 Bokeh 服务器消息完整性的功能。此外,它还提供挂钩
- __init__(header: Header, metadata: dict[str, Any], content: Content) None [source]#
从 header、metadata 和 content 字典初始化新消息。
要从现有的 JSON 片段组装消息,请使用
assemble
方法。要使用自动生成的 header 创建新消息,请使用子类
create
方法。- 参数:
header (类 JSON)
metadata (类 JSON)
content (类 JSON)
- classmethod assemble(header_json: str, metadata_json: str, content_json: str) Message[Content] [source]#
创建一个新消息,由 JSON 片段组装而成。
- 参数:
header_json (
JSON
)metadata_json (
JSON
)content_json (
JSON
)
- 返回值:
消息子类
- 引发:
- assemble_buffer(buf_header: BufferHeader, buf_payload: bytes) None [source]#
添加我们从套接字读取的缓冲区头和有效负载。
这与 add_buffer() 不同,因为我们正在根据头的 num_buffers 进行验证,而不是填充头。
- 参数:
buf_header (
JSON
) – 缓冲区头buf_payload (
JSON
或 bytes) – 缓冲区有效负载
- 返回值:
无
- 引发:
- async send(conn: WebSocketClientConnectionWrapper) int [source]#
在给定的连接上发送消息。
- 参数:
conn (WebSocketHandler) – 用于发送消息的 WebSocketHandler
- 返回值:
发送的字节数
- 返回类型:
- async write_buffers(conn: WebSocketClientConnectionWrapper, locked: bool = True) int [source]#
将任何缓冲区头和有效负载写入给定的连接。
bokeh.protocol.messages#
- class ack(header: Header, metadata: dict[str, Any], content: Content)[source]#
定义用于确认客户端成功连接到 Bokeh 服务器的
ACK
消息。此消息的
content
片段为空。
- class error(header: Header, metadata: dict[str, Any], content: Content)[source]#
定义用于将错误条件报告回 Bokeh 服务器的
ERROR
消息。此消息的
content
片段具有以下形式{ 'text' : <error message text> # this is optional 'traceback' : <traceback text> }
- class ok(header: Header, metadata: dict[str, Any], content: Content)[source]#
定义用于确认先前消息成功处理的
OK
消息。此消息的
content
片段为空。
- class patch_doc(header: Header, metadata: dict[str, Any], content: Content)[source]#
定义用于在远程文档之间发送文档修补事件的
PATCH-DOC
消息。此消息的
content
片段具有以下形式{ 'events' : <protocol document events> 'references' : <model references> }
- class pull_doc_reply(header: Header, metadata: dict[str, Any], content: Content)[source]#
定义用于回复客户端的文档提取请求的
PULL-DOC-REPLY
消息此消息的
content
片段具有以下形式{ 'doc' : <Document JSON> }
- class pull_doc_req(header: Header, metadata: dict[str, Any], content: Content)[source]#
定义用于请求 Bokeh 服务器使用新的 Bokeh 文档进行回复的
PULL-DOC-REQ
消息。此消息的
content
片段为空。- classmethod create(**metadata: Any) pull_doc_req [source]#
创建
PULL-DOC-REQ
消息任何关键字参数都将原样放入消息
metadata
片段中。
- class push_doc(header: Header, metadata: dict[str, Any], content: Content)[source]#
定义用于将文档从客户端推送到 Bokeh 服务器的
PUSH-DOC
消息。此消息的
content
片段具有以下形式{ 'doc' : <Document JSON> }
- class server_info_reply(header: Header, metadata: dict[str, Any], content: Content)[source]#
定义用于回复客户端服务器信息请求的
SERVER-INFO-REPLY
消息。此消息的
content
片段具有以下形式{ 'version_info' : { 'bokeh' : <bokeh library version> 'server' : <bokeh server version> } }
- classmethod create(request_id: ID, **metadata: Any) server_info_reply [source]#
创建
SERVER-INFO-REPLY
消息- 参数:
request_id (str) – 发出信息请求的消息的 ID
任何其他关键字参数都将按原样放入消息
metadata
片段中。
bokeh.protocol.receiver#
将 WebSocket 线路消息片段组装成完整的 Bokeh 服务器消息对象,以便进行处理。
- class Receiver(protocol: Protocol)[source]#
接收网络消息片段并组装完整的 Bokeh 服务器消息对象。
在
MessageError
或ValidationError
时,接收器将重置其状态并尝试使用新消息。接收到的片段可以是字节或 Unicode,具体取决于传输的语义(WebSocket 允许两者)。
[ # these are required b'{header}', # serialized header dict b'{metadata}', # serialized metadata dict b'{content}, # serialized content dict # these are optional, and come in pairs; header contains num_buffers b'{buf_header}', # serialized buffer header dict b'array' # raw buffer payload data ... ]
header
片段将具有以下形式:header = { # these are required 'msgid' : <str> # a unique id for the message 'msgtype' : <str> # a message type, e.g. 'ACK', 'PATCH-DOC', etc # these are optional 'num_buffers' : <int> # the number of additional buffers, if any }
metadata
片段可能包含任何任意信息。Bokeh 不会出于任何目的处理它,但可能对外部监控或仪器工具有用。content
片段由特定消息类型定义。