跳转至

← 返回接口目录

EX 连接与主机管理

ExTdxClient 是同步客户端,端口默认 7727。建议以 with 管理连接生命周期,避免在多个线程上同时复用同一个请求连接。

init

ExTdxClient.__init__(host: str | None=None, port: int=DEFAULT_EX_PORT, timeout: float=15.0, *, hosts: list[str] | None=None, auto_failover: bool=True, probe_on_connect: bool=True, probe_timeout: float | None=None, max_probe_workers: int=DEFAULT_PROBE_WORKERS) -> None
参数 类型 默认值 含义
host str \| None None 优先主机的裸地址;MAC 的 hosts 非 None 时优先使用 hosts,EX/MAC-EX 将 host 置于候选首位。
port int DEFAULT_EX_PORT TCP 端口;MAC 默认 7709,EX/MAC-EX 默认 7727。
timeout float 15.0 读写或探活超时,单位秒。
hosts list[str] \| None None 候选主机列表;省略时使用各客户端自己的内置/配置主机池。
auto_failover bool True 是否开启 EX 命令级失败换台。
probe_on_connect bool True 是否在 EX 连接前探测候选主机的业务应答。
probe_timeout float \| None None EX 业务探活超时;None 时由当前 timeout 与默认探活上限共同决定。
max_probe_workers int DEFAULT_PROBE_WORKERS EX 探活最大并发数。

构造/返回客户端实例;实际业务仍须确认目标主机支持所需命令。from_best_host 选主机,不把所有协议能力探测一遍。

from_best_host

ExTdxClient.from_best_host(hosts: list[str] | None=None, port: int=DEFAULT_EX_PORT, timeout: float=15.0, ping_timeout: float=DEFAULT_PROBE_TIMEOUT) -> 'ExTdxClient'
参数 类型 默认值 含义
hosts list[str] \| None None 候选主机列表;省略时使用各客户端自己的内置/配置主机池。
port int DEFAULT_EX_PORT TCP 端口;MAC 默认 7709,EX/MAC-EX 默认 7727。
timeout float 15.0 读写或探活超时,单位秒。
ping_timeout float DEFAULT_PROBE_TIMEOUT 选择主机时探活超时,单位秒。

构造/返回客户端实例;实际业务仍须确认目标主机支持所需命令。from_best_host 选主机,不把所有协议能力探测一遍。

ping_all

ExTdxClient.ping_all(hosts: list[str] | None=None, port: int=DEFAULT_EX_PORT, timeout: float=DEFAULT_PROBE_TIMEOUT) -> list[tuple[str, float]]
参数 类型 默认值 含义
hosts list[str] \| None None 候选主机列表;省略时使用各客户端自己的内置/配置主机池。
port int DEFAULT_EX_PORT TCP 端口;MAC 默认 7709,EX/MAC-EX 默认 7727。
timeout float DEFAULT_PROBE_TIMEOUT 读写或探活超时,单位秒。

返回按延迟升序的 (host, seconds) 列表,延迟单位秒;不要把探活成功等同于所有市场/命令可用。

connect

ExTdxClient.connect() -> None

无业务参数。

返回 None。connect 建立连接,close 释放连接;disconnect 是 close 的语义别名。ensure_connected 的实际检查范围见下节。

close

ExTdxClient.close() -> None

无业务参数。

返回 None。connect 建立连接,close 释放连接;disconnect 是 close 的语义别名。ensure_connected 的实际检查范围见下节。

refresh_hosts

ExTdxClient.refresh_hosts(*, timeout: float | None=None, max_workers: int | None=None) -> list[ExHostProbe]
参数 类型 默认值 含义
timeout float \| None None 读写或探活超时,单位秒。
max_workers int \| None None 重探时覆盖 EX 探活并发数;None 沿用实例配置。

返回 ExHostProbe 列表并更新健康排序。成员为 host、ok、latency_ms(毫秒,可为 None)、error(错误文本,可为 None);失败原因也可从 unhealthy_hosts 查看。

主机、重试与属性

候选来自显式 hosts、ELTDX_EX_HOSTS、用户 ex_servers.json 或内置池,host 放在首位;环境变量及配置规则见通道概览。业务探活默认 0x23F5,单候选不额外探活。auto_failover 开启时,TransportError 触发健康标记与候选切换。host 是当前/待用主机,healthy_hosts 为可用列表副本,unhealthy_hosts 为主机到失败原因字典;空健康列表可能表示尚未探测。

使用示例

from eltdx.ex import ExTdxClient

with ExTdxClient() as client:
    result = client.get_instrument_count()
    print(result)

错误处理

传输失败通过 TransportError 及其子类传播,协议解码失败可抛 ProtocolError;参数检查也可能抛 ValueError、TypeError 或 struct.error,当前并未统一封装所有参数错误。空列表/None/0 也需根据单页规则解释,不把缺数据当作请求成功且覆盖完整。

返回完整索引 · 主机覆盖与配置