有没有一种很好的方法来接收 zmq 套接字上的所有可用消息?特别是在使用轮询器时。
或者是保持调用非阻塞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