gpt4 book ai didi

python - ZMQ连接后 sleep ?

转载 作者:行者123 更新时间:2023-11-28 18:43:26 25 4
gpt4 key购买 nike

在 ROUTER-ROUTER 设置中,在我将一个 ROUTER 套接字连接到另一个 ROUTER 套接字后,如果我在 connect() 到另一个 ROUTER 套接字后没有休眠(比如 0.1 秒左右) , send() 通常不会通过(尽管有时会偶然通过)。

  1. 有没有办法在发送前确保我已连接?
  2. 为什么 send() 没有排队并正确执行直到建立连接?

此外,这与另一端的服务器是否存在无关,而是我在 connect() 之后过早地 send() 并且它以某种方式失败了.我不确定为什么。

最佳答案

Is there a way to make sure I am connected before I send?

不直接。推荐的方法是使用类似于 Freelanch Protocol 的东西。并保持 ping 直到收到响应。如果您停止收到对您的 ping 的响应,您应该认为自己已断开连接。

Why aren't the send()s queued and properly executed until the connection is made?

在双方完成内部 ZeroMQ 握手之前,路由器无法向对等方发送消息。这就是它的工作方式,因为 ROUTER 需要其对等方的 ID 才能“路由”。显然,在您的开发系统上休眠 0.1 秒是合适的时间。如果您需要连接然后发送而不休眠或重试的能力,那么您需要使用不同的模式。

例如,使用 DEALER-ROUTER,DEALER 客户端可以连接并立即发送,ZeroMQ 会将消息排队直到它被传递。起作用的原因是 DEALER 不需要对等方的 ID - 因为它不“路由”。当 ROUTER 服务器收到消息时,握手已经完成,因此它可以立即响应而无需休眠。

关于python - ZMQ连接后 sleep ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23433037/

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