ZeroRPC自动分配空闲端口号

时间:2014-11-02 14:08:08

标签: python sockets port zeromq

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

由于ZeroRPC基于ZeroMQ,因此必须是可能的。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

阅读有关ZeroRPC-python当前状态的详细信息后,解决任务的最安全选项是创建一个中心 LotterySINGLETON ,它将收到&lt; - {{ 1}} / <强> REQ - &GT;根据实例的请求发送下一个免费REP

此方法与使用其他稳定的ZeroMQ API的ZeroRPC-dev / mod(s)修改隔离,并使您可以完全控制预先配置/包含在/排除在{{ 1}}的绘画。

另一种方法是试图绕过ZeroRPC层并直接向ZeroMQ询问下一个随机端口,但ZeroRPC文档不鼓励绕过他们自己对(纯粹的)ZeroMQ框架元素的控制(这是非常合理地强调,因为它会削弱其附加操作和服务的ZeroRPC层一致性,所以它应该在试用/错误中“服从”而不是“挑战”......)

答案 1 :(得分:0)

以下内容将让ZMQ选择一个免费端口:

s = zerorpc.Server(SomeClass())
s.bind('tcp://127.0.0.1:0')

问题在于现在你不知道它绑定到哪个端口。我设法找到了netstat并成功连接到它的端口,但这可能不是你想要做的。我提出了一个单独的问题:Find out bound ports of zerorpc server