【问题标题】:How to detect poll timeout in pyzmq如何在pyzmq中检测轮询超时
【发布时间】:2017-01-30 18:16:25
【问题描述】:
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
如图所示,有没有办法检测轮询时何时发生超时?找不到搜索方法
【问题讨论】:
标签:
python-3.x
timeout
zeromq
pyzmq
【解决方案1】:
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")