【发布时间】:2017-05-21 06:05:44
【问题描述】:
我有大量(~100)PUSH“客户端”定期(~1 / s)向PULL“服务器”发送消息。服务器以每秒约 2 批的速度分批处理消息。批量大小不是固定的——理想情况下,我想在每次迭代时处理队列中的所有消息。我获取队列中所有消息的代码如下:
buffer = []
while True:
try:
buffer.append(socket.recv_pyobj(zmq.NOBLOCK))
except zmq.ZMQError as e:
break
print(len(buffer))
这似乎可行,但缓冲区长度在两次迭代之间变化很大。通常,我希望每次阅读约 50 条消息。但是,我经常看到许多迭代少于 10 条消息,然后是一个非常大的消息(约 1000 条)。我怀疑我在缓冲或类似的事情上做错了,因为这不应该发生。
【问题讨论】: