bokeh.server.util#

提供一些实用函数,用于实现 bokeh.server 中的不同组件。

bind_sockets(address: str | None, port: int) tuple[list[socket], int][source]#

将套接字绑定到地址上的端口。

参数:
  • address (str) – 要绑定端口的地址,例如 "localhost"

  • port (int) –

    要绑定的端口号。

    传递 0 以使操作系统自动选择一个空闲端口。

此函数返回一个 2 元组,其中新套接字作为第一个元素,绑定的端口作为第二个元素。(当将 0 作为端口号传递以绑定任何空闲端口时很有用。)

返回值:

(套接字, 端口)

check_allowlist(host: str, allowlist: Sequence[str]) bool[source]#

检查给定的请求主机是否与允许列表匹配。

参数:
  • host (str) –

    要与允许列表进行比较的主机字符串。

    如果主机未指定端口,则隐式假定为 ":80"

  • allowlist (seq[str]) – 要匹配的主机模式列表

返回值:

如果 hostallowlist 中的任何模式匹配,则为 True,否则为 False

create_hosts_allowlist(host_list: Sequence[str] | None, port: int | None) list[str][source]#

此允许列表可用于将 websocket 或其他连接限制为仅那些明确源自已批准主机的连接。

参数:
  • host_list (seq[str]) –

    要添加到允许列表的字符串 <name><name>:<port> 值列表。

    如果主机字符串中未指定端口,则隐式假定为 ":80"

  • port (int) –

    如果 host_list 为空或 None,则允许列表将是单个项目列表 `` [ ‘localhost:<port>’ ]``

    如果 host_list 不为空,则此参数无效。

返回值:

list[str]

引发:

ValueError如果主机端口值无效

注意

如果 host_list 中的任何主机包含通配符 *,则会记录有关宽松 websocket 连接的警告。

match_host(host: str, pattern: str) bool[source]#

将主机字符串与模式匹配

参数:
  • host (str) – 要与给定模式比较的主机名

  • pattern (str) – 表示主机名模式的字符串,可能包含用于 IP 地址八位字节或端口的通配符。

如果主机名与模式匹配(包括任何通配符),则此函数将返回 True。如果模式包含端口,则主机字符串也必须包含匹配的端口。

返回值:

bool

示例

>>> match_host('192.168.0.1:80', '192.168.0.1:80')
True
>>> match_host('192.168.0.1:80', '192.168.0.1')
True
>>> match_host('192.168.0.1:80', '192.168.0.1:8080')
False
>>> match_host('192.168.0.1', '192.168.0.2')
False
>>> match_host('192.168.0.1', '192.168.*.*')
True
>>> match_host('alice', 'alice')
True
>>> match_host('alice:80', 'alice')
True
>>> match_host('alice', 'bob')
False
>>> match_host('foo.example.com', 'foo.example.com.net')
False
>>> match_host('alice', '*')
True
>>> match_host('alice', '*:*')
True
>>> match_host('alice:80', '*')
True
>>> match_host('alice:80', '*:80')
True
>>> match_host('alice:8080', '*:80')
False