gpt4 book ai didi

python - ZeroMQ 连接阻塞

转载 作者:可可西里 更新时间:2023-11-01 02:47:05 27 4
gpt4 key购买 nike

如果连接端点是一个 IP,如 tcp://192.168.0.2:9876,Socket.connect 将立即返回。但是,如果端点包含类似 tcp://server.local.:9876 的 DNS 名称,Socket.connect 似乎会阻塞,直到 server.local。已解析,如果无法解析名称,最终会失败并引发 zmq.error.ZMQError 异常。

有没有办法以非阻塞方式连接?

最佳答案

DNS 主机名解析在 zmq::socket_base_t::connect 中以同步方式完成:

//  Resolve address (if needed by the protocol)
if (protocol == "tcp") {
paddr->resolved.tcp_addr = new (std::nothrow) tcp_address_t ();
alloc_assert (paddr->resolved.tcp_addr);
int rc = paddr->resolved.tcp_addr->resolve (
address.c_str (), false, options.ipv6);
if (rc != 0) {
delete paddr;
return -1;
}
}

因此看来您别无选择,只能进行自己的异步 DNS 解析,然后将解析后的地址传递给 ZeroMQ。

您可能会发现以下内容很有用 resolver example .它基于 pyuv/pycares,看起来很不错。

关于python - ZeroMQ 连接阻塞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21171564/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com