2012-10-16 36 views
2

我已经连接了zeromq,“msg_in”已经排队。如果在这段时间内队列没有新消息进入超时设置。如何设置超时。以下是核心代码如何设置一个pyzmq套接字队列超时

requestDict = {"id":111, "name":"test"} 
zmqConn.mSocket.send(json.dumps(requestDict), flags=zmq.NOBLOCK) 
msg_in = zmqConn.mSocket.recv() 

回答

8

您应该使用轮询的超时:

import zmq 
p = zmq.Poller() 
p.register(zmqConn.mSocket, zmq.POLLIN) 

msgs = dict(p.poll(timeout)) 
if zmqConn.mSocket in msgs and msgs[zmqConn.mSocket] == zmq.POLLIN: 
    # recv there 
else: 
    # timeout 
+0

这是否解决方案适用于工控机吗? –

+0

有用的链接:https://github.com/zeromq/pyzmq/issues/132 –