1

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

1 回答 1

0

可能值得一提的是,如果消息量很大,您可以将socket.poll超时设置为0使其立即返回 - more here

于 2018-09-20T22:05:48.527 回答