Python 3.x 如何在pyzmq中检测轮询超时

Python 3.x 如何在pyzmq中检测轮询超时,python-3.x,timeout,zeromq,pyzmq,Python 3.x,Timeout,Zeromq,Pyzmq,如图所示,在轮询时是否有方法检测超时?找不到搜索的方法。轮询返回的元组中,套接字注册为第一项,并且有一个标志指示是否接收或发送帧。因此,您只需检查标志,如许多pyzmq示例所示: poller = zmq.Poller() poller.register(socket, zmq.POLLIN) while(1) try: sockets = dict(poller.poll(timeout)) #How to detect timeout # do jo

如图所示,在轮询时是否有方法检测超时?找不到搜索的方法。

轮询返回的元组中,套接字注册为第一项,并且有一个标志指示是否接收或发送帧。因此,您只需检查标志,如许多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
如果您只需要测试一个插座,这也可以:

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")