我应该使用什么RPC模块在Python中实现RCP并能够在以后更改连接方法?

时间:2011-12-08 11:24:02

标签: python ssh rpc

我必须实现从Python到Python的一些RPC,但出于安全原因,连接方法非常有限。

目前似乎我可以使用SSH进行连接并在远程系统上运行单个python脚本。

以后当我们可能需要使用其他东西进行连接时,这可能会发生变化,可能telnet所以我想要一个可以使用不同协议的解决方案。

另一个潜在的限制是Python版本,即使客户端和服务器运行的版本不同,也必须使用Python 2.5-2.7。

我应该使用什么,请建议只有你有成功经验,否则我也可以google;)

4 个答案:

答案 0 :(得分:1)

我想说在你的情况下传递两个不同python进程的最简单方法是使用pyro3。我最近在一个小项目中使用了pyro4,让我专注于我想要发送/接收的信息非常有效,而不是正确地编码/解码它。

我建议您使用v3,因为根据源中的tox.ini文件,v4未针对python 2.5进行测试,因此您可能会遇到一些问题。

关于网络,这个库负责处理套接字本身,因此没有明确支持telnet或ssh(尽管使用paramiko在TODO列表中)。 Hene,你可能需要依赖ssh隧道,如example

答案 1 :(得分:0)

作为python 2.6+的部分解决方案,您可以查看Versile Python(目前正在开发中),我们刚刚添加了对通过管道进行反应堆驱动的字节通信的支持(需要一个允许select.select on的平台)管道文件描述符,即不是Windows)。这样就可以通过管道或stdin / stdout链接到VPy ORB。有关如何与ssh一起使用的示例,请参阅此recipe

Versile Python需要python 2.6+或3.x,所以很遗憾不适用于2.5。

答案 2 :(得分:0)

Spyne支持可插拔协议和传输,但它不支持SSH(或任何其他类似套接字的传输)。这是一个稳定但非常新的项目 - 特别是客户逻辑需要一些认真的工作。

至于你原来的问题,在我熟悉的序列化程序中(大多数你在spyne网站上看到的)最适合管道传输的是MessagePack,因为它支持迭代器。文件类对象(又称流式反序列化)接口。

答案 3 :(得分:-1)

您是否想与Rabbitmq一起使用来发送接收命令和日志?

https://github.com/nvalerkos/cronio

这是python 2.7需要的Rabbitmq