我有一个执行繁重计算的 ZMQ 服务器,因此通过
server_socket.send()
将结果发送回客户端可能需要几分钟时间。客户端应该无限期地等待计算结果。但是,如果在计算过程中连接断开,那么客户端应该找到另一个服务器来连接。
我知道这可以通过在服务器上使用后台线程手动实现,该线程不断向客户端发送“请稍候”消息,直到结果准备好。这样,如果服务器在 1 秒内没有响应,客户端可以使用
client_socket.RCVTIMEO = 1000
来引发 zmq.Again
。
但是,我想知道ZMQ中是否有内置的机制,因为它本身已经使用后台线程来发送和接收消息。 ZMQ 中是否有一种机制来判断连接是否仍然存在,即使服务器代码有一段时间没有调用
server_socket.send()
?