我应该选择哪个RPC模块在Python中实现RCP,并能后续更改连接方式?
我需要在两个Python之间实现一些远程过程调用(RPC),但是由于安全原因,连接方式非常有限。
目前看来,我可能可以通过SSH
来连接,并在远程系统上运行一个Python脚本。
将来情况可能会有所变化,我们可能需要使用其他方式连接,比如telnet
,所以我希望找到一个可以支持不同协议的解决方案。
另一个潜在的限制是关于Python版本的,它必须能够在Python 2.5到2.7之间工作,即使客户端和服务器运行的是不同的版本。
请建议我应该使用什么,前提是你有成功的经验,否则我也可以自己去查资料;)
3 个回答
0
Spyne 支持可插拔的协议和传输方式,但目前还不支持 SSH(或者其他类似的套接字传输)。这个项目虽然很稳定,但还比较新,特别是客户端的逻辑还需要认真改进。
至于你最初的问题,在我熟悉的序列化工具中(大部分是在 spyne 网站上看到的),最适合通过流传输来使用的是 MessagePack,因为它支持对文件类对象的迭代(也就是流式反序列化)接口。
0
作为Python 2.6及以上版本的一个部分解决方案,你可以看看Versile Python(目前还在开发中)。我们刚刚添加了通过管道进行反应器驱动的字节通信的支持(这需要一个可以在管道文件描述符上使用select.select的系统,也就是说,Windows不支持)。这使得可以通过管道或标准输入/输出连接到VPy ORB。你可以查看这个示例,了解它如何与ssh一起使用。
Versile Python需要Python 2.6及以上版本或3.x,所以不幸的是,它不支持2.5版本。