我正在将ZeroRPC用于一个项目,其中可能在同一台计算机上运行多个实例。因此,我需要能够自动分配未使用的端口号。我知道如何使用socket.bind(('', 0))使用常规套接字或使用bind_to_random_port方法使用ZeroMQ完成此操作,但是我不知道如何使用ZeroRPC做到这一点。

由于ZeroRPC基于ZeroMQ,因此必须可行。

有任何想法吗?

最佳答案

阅读了有关ZeroRPC-python当前状态的详细信息之后,解决该任务的最安全的选择是创建一个中央 LotterySINGLETON ,它将接收 REQ / REP ->根据实例的请求发送下一个免费的port#

此方法与使用原本稳定的ZeroMQ API的ZeroRPC-dev/mod修改隔离开来,可让您完全控制LotterySINGLETON绘制中预先配置/包含/排除的port#-。

绕过的另一种方法是尝试绕过ZeroRPC层并直接向ZeroMQ查询下一个随机端口,但是ZeroRPC文档不鼓励绕过它们自己对(否则是纯净的)ZeroMQ框架元素施加的控制(这是相当合理的)需要强调的是,由于它破坏了附加操作和服务的ZeroRPC层一致性,因此在试验/错误中应“服从”而不是“受挑战” ...)

10-07 13:38