ZeroMQ REQ/REP服务器错误处理

Tom*_*ett 9 zeromq pyzmq

我试图使用ZeroMQ rep/req,无法弄清楚如何处理服务器端错误.看看这里的代码:

socket.bind("tcp://*:%s" % port)
while True:
    #  Wait for next request from client
    message = socket.recv()
    print "Received request: ", message
    time.sleep (1)  
    socket.send("World from %s" % port)
Run Code Online (Sandbox Code Playgroud)

我的问题是如果客户端调用socket.send()然后挂起或崩溃会发生什么.服务器不会永远卡在socket.send()或socket.recv()上吗?

请注意,TCP套接字不是问题.使用TCP套接字,我可以简单地断开连接.使用ZMQ,我可以隐式管理连接,但我不知道是否可以打破"会话"或"连接"并重新开始.

Ste*_*ehl 6

您可以像终止TCP套接字一样终止ZMQ套接字.

socket.close()

如果您需要等待一条消息,但只需要有限的时间,您可以传递一个timeout标志socket.recv(timeout=1024),然后处理超时错误情况,就像TCP套接字超时或断开连接一样.如果您需要管理所有可能处于错误状态的多个套接字,那么Poller该类将允许您完成此操作.