bokeh.protocol

实现并提供Bokeh服务器和客户机之间通信的消息协议。

class Protocol[源代码]

为Bokeh服务器消息协议提供一个消息工厂。

assemble(header_json, metadata_json, content_json)[源代码]

创建一个由json片段组装的消息实例。

参数
  • header_json (JSON) --

  • metadata_json (JSON) --

  • content_json (JSON) --

返回

消息

create(msgtype, *args, **kwargs)[源代码]

为给定类型创建新的消息实例。

参数

msgtype (str) --

bokeh.protocol.exceptions

提供与处理Bokeh协议消息有关的命名异常。

exception MessageError[源代码]

指示构造Bokeh消息对象时出错。

此异常通常表示消息的JSON片段根本无法解码。

exception ProtocolError[源代码]

指示处理有线协议片段时出错。

此异常表示无法正确组装解码的消息片段。

exception ValidationError[源代码]

指示验证连线协议片段时出错。

此异常通常指示在预期文本片段时收到二进制消息片段,反之亦然。

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, metadata, content)[源代码]

消息基类封装了创建、组装和验证Bokeh服务器消息的完整性。此外,它还提供挂钩

__init__(header, metadata, content)[源代码]

从标头、元数据和内容字典初始化新邮件。

要从现有的JSON片段组装消息,请使用 assemble 方法。

要使用自动生成的邮件头创建新邮件,请使用子类 create 方法。

参数
  • header (JSON-like) --

  • metadata (JSON-like) --

  • content (JSON-like) --

add_buffer(buf_header, buf_payload)[源代码]

将缓冲区标头和有效负载与此消息关联。

参数
  • buf_header (JSON) -- 缓冲头

  • buf_payload (JSON or bytes) -- 缓冲有效载荷

返回

没有

引发

MessageError --

classmethod assemble(header_json, metadata_json, content_json)[源代码]

创建一个由JSON片段组合而成的新消息。

参数
  • header_json (JSON) --

  • metadata_json (JSON) --

  • content_json (JSON) --

返回

消息子类

引发

MessageError --

assemble_buffer(buf_header, buf_payload)[源代码]

添加从套接字读取的缓冲头和有效负载。

这与add_buffer()不同,因为我们验证的是头的num_buffers,而不是填充头。

参数
  • buf_header (JSON) -- 缓冲头

  • buf_payload (JSON or bytes) -- 缓冲有效载荷

返回

没有

引发

ProtocolError --

classmethod create_header(request_id=None)[源代码]

返回消息头片段dict。

参数

request_id (str or None) -- 此邮件答复的邮件的邮件ID

返回

消息头

返回类型

dict

async send(conn)[源代码]

在给定的连接上发送消息。

参数

conn (WebSocketHandler) -- 发送消息的WebSocketHandler

返回

发送的字节数

返回类型

int

async write_buffers(conn, locked=True)[源代码]

将任何缓冲头和有效负载写入给定连接。

参数
  • conn (object) -- 任何对象都可以是 write_message 方法。通常是龙卷风 WSHandlerWebSocketClientConnection

  • locked (bool) --

返回

发送的字节数

返回类型

int

property complete

返回是否存在消息的所有必需部分。

返回

如果消息完整,则为True,否则为False

返回类型

bool

bokeh.protocol.messages

ACK

class ack(header, metadata, content)[源代码]

定义 ACK 用于确认成功连接到Bokeh服务器的客户端的消息。

这个 content 此邮件的片段为空。

classmethod create(**metadata)[源代码]

创建一个 ACK 消息

任何关键字参数都将被放入消息中 metadata 按原样分割。

ERROR

class error(header, metadata, content)[源代码]

定义 ERROR 用于将错误情况报告回Bokeh服务器的消息。

这个 content 此消息的片段具有以下形式:

{
    'text'      : <error message text>

    # this is optional
    'traceback' : <traceback text>
}
classmethod create(request_id, text, **metadata)[源代码]

创建一个 ERROR 消息

参数
  • request_id (str) -- 引发错误的消息的消息ID。

  • text (str) -- 任何错误消息或回溯等的文本。

任何其他关键字参数都将被放入消息中 metadata 按原样分割。

OK

class ok(header, metadata, content)[源代码]

定义 OK 确认成功处理前一条消息的消息。

这个 content 此邮件的片段为空。

classmethod create(request_id, **metadata)[源代码]

创建一个 OK 消息

参数

request_id (str) -- 触发OK的消息的消息ID。

任何其他关键字参数都将被放入消息中 metadata 按原样分割。

PATCH-DOC

class patch_doc(header, metadata, content)[源代码]

定义 PATCH-DOC 用于在远程文档之间发送文档修补程序事件的消息。

这个 content 此消息的片段具有以下形式:

{
    'events'     : <protocol document events>
    'references' : <model references>
}
apply_to_document(doc, setter=None)[源代码]
classmethod create(events, use_buffers=True, **metadata)[源代码]

创建一个 PATCH-DOC 消息

参数

events (list) -- 要应用于文档的修补程序事件列表

任何其他关键字参数都将被放入消息中 metadata 按原样分割。

process_document_events(events, use_buffers=True)[源代码]

创建一个JSON字符串,描述要应用的修补程序以及任何可选缓冲区。

参数

events -- 要转换为修补程序的事件列表

返回

JSON字符串,可应用于对obj以及任何可选缓冲区进行给定更新

返回类型

str, list

PULL-DOC-REPLY

class pull_doc_reply(header, metadata, content)[源代码]

定义 PULL-DOC-REPLY 用于答复来自客户端的文档拉取请求的消息

这个 content 此消息的片段具有以下形式:

{
    'doc' : <Document JSON>
}
classmethod create(request_id, document, **metadata)[源代码]

创建一个 PULL-DOC-REPLY 消息

参数
  • request_id (str) -- 发出拉取请求的消息的消息ID

  • document (Document) -- 要答复的文档

任何其他关键字参数都将被放入消息中 metadata 按原样分割。

PULL-DOC-REQ

class pull_doc_req(header, metadata, content)[源代码]

定义 PULL-DOC-REQ 用于请求Bokeh服务器用新Bokeh文档答复的消息。

这个 content 此邮件的片段为空。

classmethod create(**metadata)[源代码]

创建一个 PULL-DOC-REQ 消息

任何关键字参数都将被放入消息中 metadata 按原样分割。

PUSH-DOC

class push_doc(header, metadata, content)[源代码]

定义 PUSH-DOC 用于将文档从客户端推送到Bokeh服务器的消息。

这个 content 此消息的片段具有以下形式:

{
    'doc' : <Document JSON>
}
classmethod create(document, **metadata)[源代码]
push_to_document(doc)[源代码]
引发

ProtocolError --

SERVER-INFO-REPLY

class server_info_reply(header, metadata, content)[源代码]

定义 SERVER-INFO-REPLY 用于答复来自客户端的服务器信息请求的消息。

这个 content 此消息的片段具有以下形式:

{
    'version_info' : {
        'bokeh'  : <bokeh library version>
        'server' : <bokeh server version>
    }
}
classmethod create(request_id, **metadata)[源代码]

创建一个 SERVER-INFO-REPLY 消息

参数

request_id (str) -- 发出info请求的消息的消息ID

任何其他关键字参数都将被放入消息中 metadata 按原样分割。

SERVER-INFO-REQ

class server_info_req(header, metadata, content)[源代码]

定义 SERVER-INFO-REQ 请求Bokeh服务器的消息提供了有关其自身的信息。

这个 content 此邮件的片段为空。

classmethod create(**metadata)[源代码]

创建一个 SERVER-INFO-REQ 消息

任何关键字参数都将被放入消息中 metadata 按原样分割。

bokeh.protocol.receiver

将websocketwire消息片段组装成可以处理的完整Bokeh服务器消息对象。

class Receiver(protocol)[源代码]

接收wire消息片段并组装完整的Bokeh服务器消息对象。

MessageErrorValidationError ,则接收器将重置其状态并尝试使用新消息。

这个 片段 接收的内容可以是字节或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 片段由特定的消息类型定义。

__init__(protocol)[源代码]

使用特定的Bokeh协议配置接收器。

参数

protocol (Protocol) -- 一个Bokeh协议对象,用于组装收集的消息片段。

async consume(fragment)[源代码]

使用单个协议消息片段。

参数

fragment (JSON) -- 要汇编的消息片段。当一个完整的消息被组装时,接收者状态将被重置以开始使用一个新的消息。