You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python ZMQ PULL与PUSH socket收发速率不一致相关问题咨询

PUSH/PULL 套接字缓存与消息消费问题解答

问题1:PUSH socket终止运行但PULL socket仍保持运行,PULL socket是否还能收到剩余的消息?

答案分两种场景:

  • 如果剩余消息已经完成从PUSH进程的用户态发送队列到内核网络缓冲区、或者已经传输到PULL端的套接字接收缓冲区,那么即使PUSH进程终止,这部分消息依然可以被PULL端正常消费。
  • 你描述的场景中100秒仅成功传输10条消息,剩下90条消息绝大多数会停留在PUSH进程的ZeroMQ用户态发送队列中,这部分数据会随PUSH进程终止被操作系统回收,PULL端无法收到这部分消息。

问题2:当无接收方取消息时,PUSH socket可缓存的消息数量是否存在上限?

存在明确上限,相关规则如下:

  • PUSH端的最大缓存消息数由ZeroMQ的ZMQ_SNDHWM(发送高水位标记)套接字选项控制,默认值为1000。
  • 当发送队列中积压的消息数达到ZMQ_SNDHWM设置的阈值后,后续的send操作会进入阻塞状态,或者在非阻塞模式下返回EAGAIN错误,不再接受新的消息入队。
  • 除了ZeroMQ用户态队列的限制,操作系统内核的套接字发送缓冲区也有容量上限,同样会限制实际可缓存的消息总规模。

内容的提问来源于stack exchange,提问作者aman agarwal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 20:06:03