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
如图所示,有没有办法检测轮询时何时发生超时?无法找到搜索方式
答案 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")