有没有一种很好的方法来接收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