如何在pyzmq中检测轮询超时

时间:2017-01-24 10:14:22

标签: python-3.x timeout zeromq pyzmq

poller = zmq.Poller()
poller.register(socket, zmq.POLLIN)

while(1)
    try:
        sockets = dict(poller.poll(timeout)) #How to detect timeout
        # do job
    except SomeTimeoutException:
        break

如图所示,有没有办法检测轮询时何时发生超时?无法找到搜索方式

1 个答案:

答案 0 :(得分:0)

poll返回使用注册为第一项的套接字的元组,以及表示是接收还是发送帧的标志。因此,您可以检查标志,如许多pyzmq示例中所示:

socket_dict = dict(poller.poll(timeout))
for polled_socket, flag in socket_dict.items():
  if not (flag & zmq.POLLIN):
    print("timeout")

如果您只需要测试一个套接字,这也可以使用:

if socket.poll(timeout) & zmq.POLLIN:
    print("processing data...")
else:
    print("timeout")