从ZeroMQ(pyzmq)套接字接收所有可用消息

问题描述 投票:1回答:1

有没有一种很好的方法来接收zmq套接字上的所有消息可用消息?特别是在使用Poller时。

或者是唯一的解决方案,继续调用非阻塞recv(),直到没有任何东西离开?

编辑:

我想我可能已经回答了我自己的问题。使用socket.poll()是我能看到的最干净的。

import zmq

ctx = zmq.Context.instance()
socket = ctx.socket(zmq.SUB)
socket.connect('tcp://127.0.0.1:1234')
socket.subscribe = ''

messages = []
while socket.poll(100) == zmq.POLLIN:
    messages.append(socket.recv())

print messages
python zeromq pyzmq
1个回答
0
投票

可能值得一提的是,如果消息量很高,你可以将socket.poll超时放到0,以便立即返回 - 更多here

© www.soinside.com 2019 - 2024. All rights reserved.