gpt4 book ai didi

python - 如何设置高水位线以阻止 pyzmq 中被淹没的收件人?

转载 作者:太空宇宙 更新时间:2023-11-03 17:43:31 26 4
gpt4 key购买 nike

我对 PyZMQ 中的 HWM 行为感到困惑。我希望以下代码会被阻止

失败示例

In [1]: import zmq
In [2]: context = zmq.Context()

In [3]: alice = context.socket(zmq.ROUTER)
In [4]: alice.set_hwm(1)
In [5]: alice.setsockopt(zmq.RCVHWM, 1) # just to be sure
In [6]: alice.bind('ipc://alice')

In [7]: bob = context.socket(zmq.DEALER)
In [8]: bob.set_hwm(1)
In [9]: bob.connect('ipc://alice')

In [10]: bob.send(b'123')
In [11]: bob.send(b'123') # This doesn't block
In [12]: bob.send(b'123') # This doesn't block
In [13]: bob.send(b'123') # This doesn't block

要么我不明白 HWM,要么我不明白如何在 Python 中使用它。

问题

当收件人被大量消息淹没时,如何在发送方实现阻塞?

最佳答案

您误解了 HWM 的工作原理。 HWM 仅影响您设置的套接字的操作。所以,当alice到达她的HWM时,她会开始dropping messages 默默 - 她没有向bob提供任何反馈,因此bob继续发送消息。

高水位标记的目的不是为消息流提供可靠性,它是为了保护套接字不因内存不足而崩溃。如果需要的话,您的工作就是处理应用程序中的消息可靠性。

关于python - 如何设置高水位线以阻止 pyzmq 中被淹没的收件人?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30143974/

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