Client/Server 在 Python 中使用 SimpleXMLRPCServer 进行角色转换

Client/Server role reversal with SimpleXMLRPCServer in Python

我正在从事一个项目,目的是将各种客户端计算机的一组方法公开到服务器,以实现信息收集和自动化。我目前正在使用 Python,并且 SimpleXMLRPCServer 似乎在本地网络上运行良好,我知道客户端计算机的地址,并且没有 NAT 或防火墙。

问题是 client/server 模型对于我想做的事情来说是倒退的。我不想在客户端机器上有一个 RPC 服务器 运行,向软件客户端公开服务,而是让服务器监听来自客户端的连接,客户端连接并向服务器公开服务。

我考虑过隧道、使用 SSH 的远程端口转发或 VPN,但这些选项的扩展性不佳,并且引入了比我想要的更多的开销和复杂性。

我想我可以写一个服务器和客户端来反转模型,但我不想重新发明轮子,如果它已经存在的话。在我看来,这将是一个足够普遍的问题,已经有解决方案了。

我也是刚接触 Python 和网络服务,所以我可能完全问错了问题。

你想要的大概是WAMP routed RPC。 好像能解决你的问题,习惯了也很方便。

想法是将 WAMP 路由器(比如说)放在云端,RPC 调用方和 RPC 被调用方都是与路由器有出站连接的客户端。

我也曾使用 VPN 通过互联网将物联网设备连接在一起,但切换到这种路由器模型确实简化了事情,而且扩展性很好。

顺便说一句,WAMP 在 different languages 中实现,包括 Python。

也许Pyro可以用?它允许在 Python 中进行多种形式的分布式计算。您的要求不是很清楚,所以很难说这是否适合您,但我建议您查看文档或 Pyro 的许多示例,看看是否有符合您想要做的事情.

Pyro 抽象出大部分网络复杂性,您只需在(远程)python 对象上调用一个方法。