【发布时间】:2011-11-24 05:40:47
【问题描述】:
我刚开始使用 ZMQ。我正在设计一个应用程序,其工作流程是:
- 众多客户端之一(具有随机 PULL 地址)向 5555 处的服务器推送请求
- 服务器一直在等待客户端推送。当一个请求出现时,会为该特定请求生成一个工作进程。是的,工作进程可以同时存在。
- 当该进程完成其任务时,它会将结果推送给客户端。
我假设 PUSH/PULL 架构适合此。请对此纠正我。
但是我该如何处理这些情况呢?
- 当服务器无法响应时,client_receiver.recv() 将无限等待。
- 客户端可能会发送请求,但它会立即失败,因此工作进程将永远停留在 server_sender.send()。
那么如何在 PUSH/PULL 模型中设置超时?
编辑:感谢 user938949 的建议,我得到了一个有效的答案,我将其分享给后代。
【问题讨论】:
-
我不是 0mq 专家,但在很多这样的情况下,最好在启动时创建工作池,而不是创建工作人员来响应消息。可能我误会你了。
-
好点。我实际上计划预先分叉工人。我刚刚意识到使用 0mq 可以变得微不足道。